diff options
author | Mike Pall <mike> | 2010-01-21 19:42:51 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2010-01-21 19:42:51 +0100 |
commit | c56811bb7acf40174ac9b63e69f58b42adf85bd7 (patch) | |
tree | 76fff30891b9894f80a64f3d22b85e7278c2a7a6 /src | |
parent | 419cbb3aa95efa37b307568d06c0e0bf739c8c38 (diff) | |
download | luajit-c56811bb7acf40174ac9b63e69f58b42adf85bd7.tar.gz luajit-c56811bb7acf40174ac9b63e69f58b42adf85bd7.tar.bz2 luajit-c56811bb7acf40174ac9b63e69f58b42adf85bd7.zip |
Fix undefined behavior in table resizing calculation.
Diffstat (limited to 'src')
-rw-r--r-- | src/lj_tab.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/lj_tab.c b/src/lj_tab.c index afbdc8aa..43737aa9 100644 --- a/src/lj_tab.c +++ b/src/lj_tab.c | |||
@@ -357,7 +357,8 @@ static void rehashtab(lua_State *L, GCtab *t, cTValue *ek) | |||
357 | uint32_t total, asize, na, i; | 357 | uint32_t total, asize, na, i; |
358 | for (i = 0; i < LJ_MAX_ABITS; i++) bins[i] = 0; | 358 | for (i = 0; i < LJ_MAX_ABITS; i++) bins[i] = 0; |
359 | asize = countarray(t, bins); | 359 | asize = countarray(t, bins); |
360 | total = 1 + asize + counthash(t, bins, &asize); | 360 | total = 1 + asize; |
361 | total += counthash(t, bins, &asize); | ||
361 | asize += countint(ek, bins); | 362 | asize += countint(ek, bins); |
362 | na = bestasize(bins, &asize); | 363 | na = bestasize(bins, &asize); |
363 | total -= na; | 364 | total -= na; |