added an `L' parameter to macros L_TRY & L_THROW (someone may need it).

This commit is contained in:
Roberto Ierusalimschy 2004-12-01 13:52:54 -02:00
parent 23b38176a7
commit 12dacd3c0e
2 changed files with 8 additions and 8 deletions

6
ldo.c
View File

@ -1,5 +1,5 @@
/*
** $Id: ldo.c,v 2.10 2004/09/15 20:39:42 roberto Exp roberto $
** $Id: ldo.c,v 2.11 2004/09/22 12:37:52 roberto Exp roberto $
** Stack and Call structure of Lua
** See Copyright Notice in lua.h
*/
@ -70,7 +70,7 @@ static void seterrorobj (lua_State *L, int errcode, StkId oldtop) {
void luaD_throw (lua_State *L, int errcode) {
if (L->errorJmp) {
L->errorJmp->status = errcode;
L_THROW(L->errorJmp);
L_THROW(L, L->errorJmp);
}
else {
if (G(L)->panic) G(L)->panic(L);
@ -84,7 +84,7 @@ int luaD_rawrunprotected (lua_State *L, Pfunc f, void *ud) {
lj.status = 0;
lj.previous = L->errorJmp; /* chain new error handler */
L->errorJmp = &lj;
L_TRY(&lj,
L_TRY(L, &lj,
(*f)(L, ud);
);
L->errorJmp = lj.previous; /* restore old error handler */

View File

@ -1,5 +1,5 @@
/*
** $Id: luaconf.h,v 1.17 2004/11/24 18:55:56 roberto Exp roberto $
** $Id: luaconf.h,v 1.18 2004/12/01 15:50:18 roberto Exp roberto $
** Configuration file for Lua
** See Copyright Notice in lua.h
*/
@ -234,14 +234,14 @@
#ifndef __cplusplus
/* default handling with long jumps */
#include <setjmp.h>
#define L_THROW(c) longjmp((c)->b, 1)
#define L_TRY(c,a) if (setjmp((c)->b) == 0) { a }
#define L_THROW(L,c) longjmp((c)->b, 1)
#define L_TRY(L,c,a) if (setjmp((c)->b) == 0) { a }
#define l_jmpbuf jmp_buf
#else
/* C++ exceptions */
#define L_THROW(c) throw(c)
#define L_TRY(c,a) try { a } catch(...) \
#define L_THROW(L,c) throw(c)
#define L_TRY(L,c,a) try { a } catch(...) \
{ if ((c)->status == 0) (c)->status = -1; }
#define l_jmpbuf int /* dummy variable */
#endif