Unified · Split
| @@ -7905,7 +7905,7 @@ then <code>getinfo</code> returns <b>nil</b>. · 7904 unmodified lines | ||
| 7905 | 7905 | |
| 7906 | 7906 | |
| 7907 | 7907 | <p> |
| 7908 | −The returned table my contain all the fields returned by <a href="#lua_getinfo"><code>lua_getinfo</code></a>, | |
| 7908 | +The returned table may contain all the fields returned by <a href="#lua_getinfo"><code>lua_getinfo</code></a>, | |
| 7909 | 7909 | with the string <code>what</code> describing which fields to fill in. |
| 7910 | 7910 | The default for <code>what</code> is to get all information available, |
| 7911 | 7911 | except the table of valid lines. |
| @@ -8370,9 +8370,7 @@ is not a userdata of the expected type. · 458 unmodified lines | ||
| 8370 | 8370 | |
| 8371 | 8371 | <p> |
| 8372 | 8372 | Here is the complete syntax of Lua in extended BNF. |
| 8373 | −It does not describe operator priorities or some syntactical restrictions, | |
| 8374 | −such as <b>return</b> and <b>break</b> statements | |
| 8375 | −can only appear as the <em>last</em> statement of a block. | |
| 8373 | +(It does not describe operator precedences.) | |
| 8376 | 8374 | |
| 8377 | 8375 | |
| 8378 | 8376 | |
| @@ -8448,8 +8446,11 @@ can only appear as the <em>last</em> statement of a block. · 69 unmodified lines | ||
| 8448 | 8446 | <HR> |
| 8449 | 8447 | <SMALL> |
| 8450 | 8448 | Last update: |
| 8451 | −Fri Jun 2 14:33:44 BRT 2006 | |
| 8449 | +Mon Jun 5 17:05:27 BRT 2006 | |
| 8452 | 8450 | </SMALL> |
| 8451 | +<!-- | |
| 8452 | +Last change: ready for Lua 5.1.1 | |
| 8453 | +--> | |
| 8453 | 8454 | |
| 8454 | 8455 | </body></html> |
| 8455 | 8456 | |
| @@ -1,5 +1,5 @@ | ||
| 1 | 1 | /* |
| 2 | −** $Id: ldo.c,v 2.37 2005/12/22 16:19:56 roberto Exp $ | |
| 2 | +** $Id: ldo.c,v 2.38 2006/06/05 19:36:14 roberto Exp $ | |
| 3 | 3 | ** Stack and Call structure of Lua |
| 4 | 4 | ** See Copyright Notice in lua.h |
| 5 | 5 | */ |
| @@ -383,12 +383,14 @@ void luaD_call (lua_State *L, StkId func, int nResults) { · 377 unmodified lines | ||
| 383 | 383 | static void resume (lua_State *L, void *ud) { |
| 384 | 384 | StkId firstArg = cast(StkId, ud); |
| 385 | 385 | CallInfo *ci = L->ci; |
| 386 | − if (L->status != LUA_YIELD) { /* start coroutine */ | |
| 386 | + if (L->status == 0) { /* start coroutine? */ | |
| 387 | 387 | lua_assert(ci == L->base_ci && firstArg > L->base); |
| 388 | 388 | if (luaD_precall(L, firstArg - 1, LUA_MULTRET) != PCRLUA) |
| 389 | 389 | return; |
| 390 | 390 | } |
| 391 | 391 | else { /* resuming from previous yield */ |
| 392 | + lua_assert(L->status == LUA_YIELD); | |
| 393 | + L->status = 0; | |
| 392 | 394 | if (!f_isLua(ci)) { /* `common' yield? */ |
| 393 | 395 | /* finish interrupted execution of `OP_CALL' */ |
| 394 | 396 | lua_assert(GET_OPCODE(*((ci-1)->savedpc - 1)) == OP_CALL || |
| @@ -399,7 +401,6 @@ static void resume (lua_State *L, void *ud) { · 4 unmodified lines | ||
| 399 | 401 | else /* yielded inside a hook: just continue its execution */ |
| 400 | 402 | L->base = L->ci->base; |
| 401 | 403 | } |
| 402 | − L->status = 0; | |
| 403 | 404 | luaV_execute(L, cast_int(L->ci - L->base_ci)); |
| 404 | 405 | } |
| 405 | 406 | |
| @@ -1,5 +1,5 @@ | ||
| 1 | 1 | /* |
| 2 | −** $Id: lparser.c,v 2.41 2006/03/09 18:15:48 roberto Exp $ | |
| 2 | +** $Id: lparser.c,v 2.42 2006/06/05 15:57:59 roberto Exp $ | |
| 3 | 3 | ** Lua Parser |
| 4 | 4 | ** See Copyright Notice in lua.h |
| 5 | 5 | */ |
| @@ -299,7 +299,8 @@ static void leaveblock (FuncState *fs) { · 293 unmodified lines | ||
| 299 | 299 | removevars(fs->ls, bl->nactvar); |
| 300 | 300 | if (bl->upval) |
| 301 | 301 | luaK_codeABC(fs, OP_CLOSE, bl->nactvar, 0, 0); |
| 302 | − lua_assert(!bl->isbreakable || !bl->upval); /* loops have no body */ | |
| 302 | + /* a block either controls scope or breaks (never both) */ | |
| 303 | + lua_assert(!bl->isbreakable || !bl->upval); | |
| 303 | 304 | lua_assert(bl->nactvar == fs->nactvar); |
| 304 | 305 | fs->freereg = fs->nactvar; /* free registers */ |
| 305 | 306 | luaK_patchtohere(fs, bl->breaklist); |
| @@ -444,6 +445,7 @@ static void recfield (LexState *ls, struct ConsControl *cc) { · 138 unmodified lines | ||
| 444 | 445 | FuncState *fs = ls->fs; |
| 445 | 446 | int reg = ls->fs->freereg; |
| 446 | 447 | expdesc key, val; |
| 448 | + int rkkey; | |
| 447 | 449 | if (ls->t.token == TK_NAME) { |
| 448 | 450 | luaY_checklimit(fs, cc->nh, MAX_INT, "items in a constructor"); |
| 449 | 451 | checkname(ls, &key); |
| @@ -452,10 +454,9 @@ static void recfield (LexState *ls, struct ConsControl *cc) { · 2 unmodified lines | ||
| 452 | 454 | yindex(ls, &key); |
| 453 | 455 | cc->nh++; |
| 454 | 456 | checknext(ls, '='); |
| 455 | − luaK_exp2RK(fs, &key); | |
| 457 | + rkkey = luaK_exp2RK(fs, &key); | |
| 456 | 458 | expr(ls, &val); |
| 457 | − luaK_codeABC(fs, OP_SETTABLE, cc->t->u.s.info, luaK_exp2RK(fs, &key), | |
| 458 | − luaK_exp2RK(fs, &val)); | |
| 459 | + luaK_codeABC(fs, OP_SETTABLE, cc->t->u.s.info, rkkey, luaK_exp2RK(fs, &val)); | |
| 459 | 460 | fs->freereg = reg; /* free registers */ |
| 460 | 461 | } |
| 461 | 462 | |
| @@ -1,5 +1,5 @@ | ||
| 1 | 1 | /* |
| 2 | −** $Id: lvm.c,v 2.62 2006/01/23 19:51:43 roberto Exp $ | |
| 2 | +** $Id: lvm.c,v 2.63 2006/06/05 15:58:59 roberto Exp $ | |
| 3 | 3 | ** Lua virtual machine |
| 4 | 4 | ** See Copyright Notice in lua.h |
| 5 | 5 | */ |
| @@ -376,6 +376,7 @@ void luaV_execute (lua_State *L, int nexeccalls) { · 370 unmodified lines | ||
| 376 | 376 | TValue *k; |
| 377 | 377 | const Instruction *pc; |
| 378 | 378 | reentry: /* entry point */ |
| 379 | + lua_assert(isLua(L->ci)); | |
| 379 | 380 | pc = L->savedpc; |
| 380 | 381 | cl = &clvalue(L->ci->func)->l; |
| 381 | 382 | base = L->base; |