aboutsummaryrefslogtreecommitdiff
path: root/lvm.c
diff options
context:
space:
mode:
Diffstat (limited to 'lvm.c')
-rw-r--r--lvm.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/lvm.c b/lvm.c
index 256d689f..0a6d6270 100644
--- a/lvm.c
+++ b/lvm.c
@@ -93,7 +93,9 @@ static int l_strton (const TValue *obj, TValue *result) {
93 return 0; 93 return 0;
94 else { 94 else {
95 TString *st = tsvalue(obj); 95 TString *st = tsvalue(obj);
96 return (luaO_str2num(getstr(st), result) == tsslen(st) + 1); 96 size_t stlen;
97 const char *s = getlstr(st, stlen);
98 return (luaO_str2num(s, result) == stlen + 1);
97 } 99 }
98} 100}
99 101
@@ -377,10 +379,10 @@ void luaV_finishset (lua_State *L, const TValue *t, TValue *key,
377** have different lengths. 379** have different lengths.
378*/ 380*/
379static int l_strcmp (const TString *ts1, const TString *ts2) { 381static int l_strcmp (const TString *ts1, const TString *ts2) {
380 const char *s1 = getstr(ts1); 382 size_t rl1; /* real length */
381 size_t rl1 = tsslen(ts1); /* real length */ 383 const char *s1 = getlstr(ts1, rl1);
382 const char *s2 = getstr(ts2); 384 size_t rl2;
383 size_t rl2 = tsslen(ts2); 385 const char *s2 = getlstr(ts2, rl2);
384 for (;;) { /* for each segment */ 386 for (;;) { /* for each segment */
385 int temp = strcoll(s1, s2); 387 int temp = strcoll(s1, s2);
386 if (temp != 0) /* not equal? */ 388 if (temp != 0) /* not equal? */
@@ -630,8 +632,9 @@ static void copy2buff (StkId top, int n, char *buff) {
630 size_t tl = 0; /* size already copied */ 632 size_t tl = 0; /* size already copied */
631 do { 633 do {
632 TString *st = tsvalue(s2v(top - n)); 634 TString *st = tsvalue(s2v(top - n));
633 size_t l = tsslen(st); /* length of string being copied */ 635 size_t l; /* length of string being copied */
634 memcpy(buff + tl, getstr(st), l * sizeof(char)); 636 const char *s = getlstr(st, l);
637 memcpy(buff + tl, s, l * sizeof(char));
635 tl += l; 638 tl += l;
636 } while (--n > 0); 639 } while (--n > 0);
637} 640}