| --- lua-5.1.4.orig/src/lvm.c 2007/12/28 15:32:23 2.63.1.3 |
| +++ lua-5.1.4/src/lvm.c 2009/07/01 20:36:59 |
| @@ -133,6 +133,7 @@ |
| |
| void luaV_settable (lua_State *L, const TValue *t, TValue *key, StkId val) { |
| int loop; |
| + TValue temp; |
| for (loop = 0; loop < MAXTAGLOOP; loop++) { |
| const TValue *tm; |
| if (ttistable(t)) { /* `t' is a table? */ |
| @@ -152,7 +153,9 @@ |
| callTM(L, tm, t, key, val); |
| return; |
| } |
| - t = tm; /* else repeat with `tm' */ |
| + /* else repeat with `tm' */ |
| + setobj(L, &temp, tm); /* avoid pointing inside table (may rehash) */ |
| + t = &temp; |
| } |
| luaG_runerror(L, "loop in settable"); |
| } |
| |