From f33cda8d6eb1cac5b9042429e85f1096175c7ca5 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Wed, 30 Aug 2023 11:26:16 -0300 Subject: New macro 'getlstr' Accesses content and length of a 'TString'. --- lvm.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'lvm.c') 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) { return 0; else { TString *st = tsvalue(obj); - return (luaO_str2num(getstr(st), result) == tsslen(st) + 1); + size_t stlen; + const char *s = getlstr(st, stlen); + return (luaO_str2num(s, result) == stlen + 1); } } @@ -377,10 +379,10 @@ void luaV_finishset (lua_State *L, const TValue *t, TValue *key, ** have different lengths. */ static int l_strcmp (const TString *ts1, const TString *ts2) { - const char *s1 = getstr(ts1); - size_t rl1 = tsslen(ts1); /* real length */ - const char *s2 = getstr(ts2); - size_t rl2 = tsslen(ts2); + size_t rl1; /* real length */ + const char *s1 = getlstr(ts1, rl1); + size_t rl2; + const char *s2 = getlstr(ts2, rl2); for (;;) { /* for each segment */ int temp = strcoll(s1, s2); if (temp != 0) /* not equal? */ @@ -630,8 +632,9 @@ static void copy2buff (StkId top, int n, char *buff) { size_t tl = 0; /* size already copied */ do { TString *st = tsvalue(s2v(top - n)); - size_t l = tsslen(st); /* length of string being copied */ - memcpy(buff + tl, getstr(st), l * sizeof(char)); + size_t l; /* length of string being copied */ + const char *s = getlstr(st, l); + memcpy(buff + tl, s, l * sizeof(char)); tl += l; } while (--n > 0); } -- cgit v1.2.3-55-g6feb