From cc2b66c85687b095e68304c010b59851ca4093e1 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Wed, 13 Mar 2024 09:16:51 -0300 Subject: Removed type 'varint_t' size_t should be big enough to count the number of strings in a dump. (And, by definition, it is big enough to count the length of each string.) --- ldump.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'ldump.c') diff --git a/ldump.c b/ldump.c index 34cfb576..0d20fb0a 100644 --- a/ldump.c +++ b/ldump.c @@ -30,7 +30,7 @@ typedef struct { int strip; int status; Table *h; /* table to track saved strings */ - lua_Unsigned nstr; /* counter to number saved strings */ + lua_Integer nstr; /* counter for counting saved strings */ } DumpState; @@ -86,12 +86,12 @@ static void dumpByte (DumpState *D, int y) { ** size for 'dumpVarint' buffer: each byte can store up to 7 bits. ** (The "+6" rounds up the division.) */ -#define DIBS ((sizeof(varint_t) * CHAR_BIT + 6) / 7) +#define DIBS ((sizeof(size_t) * CHAR_BIT + 6) / 7) /* ** Dumps an unsigned integer using the MSB Varint encoding */ -static void dumpVarint (DumpState *D, varint_t x) { +static void dumpVarint (DumpState *D, size_t x) { lu_byte buff[DIBS]; int n = 1; buff[DIBS - 1] = x & 0x7f; /* fill least-significant byte */ @@ -101,9 +101,13 @@ static void dumpVarint (DumpState *D, varint_t x) { } +static void dumpSize (DumpState *D, size_t sz) { + dumpVarint(D, sz); +} + static void dumpInt (DumpState *D, int x) { lua_assert(x >= 0); - dumpVarint(D, x); + dumpVarint(D, cast(size_t, x)); } @@ -126,22 +130,22 @@ static void dumpInteger (DumpState *D, lua_Integer x) { */ static void dumpString (DumpState *D, TString *ts) { if (ts == NULL) - dumpVarint(D, 0); + dumpSize(D, 0); else { TValue idx; if (luaH_getstr(D->h, ts, &idx) == HOK) { /* string already saved? */ - dumpVarint(D, 1); /* reuse a saved string */ - dumpVarint(D, l_castS2U(ivalue(&idx))); /* index of saved string */ + dumpSize(D, 1); /* reuse a saved string */ + dumpSize(D, cast_sizet(ivalue(&idx))); /* index of saved string */ } else { /* must write and save the string */ TValue key, value; /* to save the string in the hash */ size_t size; const char *s = getlstr(ts, size); - dumpVarint(D, size + 2); + dumpSize(D, size + 2); dumpVector(D, s, size + 1); /* include ending '\0' */ D->nstr++; /* one more saved string */ setsvalue(D->L, &key, ts); /* the string is the key */ - setivalue(&value, l_castU2S(D->nstr)); /* its index is the value */ + setivalue(&value, D->nstr); /* its index is the value */ luaH_set(D->L, D->h, &key, &value); /* h[ts] = nstr */ /* integer value does not need barrier */ } -- cgit v1.2.3-55-g6feb