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 | |
| parent | 419cbb3aa95efa37b307568d06c0e0bf739c8c38 (diff) | |
| download | luajit-c56811bb7acf40174ac9b63e69f58b42adf85bd7.tar.gz luajit-c56811bb7acf40174ac9b63e69f58b42adf85bd7.tar.bz2 luajit-c56811bb7acf40174ac9b63e69f58b42adf85bd7.zip | |
Fix undefined behavior in table resizing calculation.
| -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; |
