diff options
Diffstat (limited to '')
| -rw-r--r-- | opcode.c | 13 |
1 files changed, 9 insertions, 4 deletions
| @@ -3,7 +3,7 @@ | |||
| 3 | ** TecCGraf - PUC-Rio | 3 | ** TecCGraf - PUC-Rio |
| 4 | */ | 4 | */ |
| 5 | 5 | ||
| 6 | char *rcs_opcode="$Id: opcode.c,v 3.71 1996/07/24 17:55:57 roberto Exp roberto $"; | 6 | char *rcs_opcode="$Id: opcode.c,v 3.72 1996/08/15 18:40:55 roberto Exp roberto $"; |
| 7 | 7 | ||
| 8 | #include <setjmp.h> | 8 | #include <setjmp.h> |
| 9 | #include <stdio.h> | 9 | #include <stdio.h> |
| @@ -682,7 +682,8 @@ int lua_isstring (lua_Object object) | |||
| 682 | int lua_isfunction (lua_Object object) | 682 | int lua_isfunction (lua_Object object) |
| 683 | { | 683 | { |
| 684 | int t = lua_type(object); | 684 | int t = lua_type(object); |
| 685 | return (t == LUA_T_FUNCTION) || (t == LUA_T_CFUNCTION); | 685 | return (t == LUA_T_FUNCTION) || (t == LUA_T_CFUNCTION) || |
| 686 | (t == LUA_T_MARK) || (t == LUA_T_CMARK); | ||
| 686 | } | 687 | } |
| 687 | 688 | ||
| 688 | /* | 689 | /* |
| @@ -710,7 +711,8 @@ char *lua_getstring (lua_Object object) | |||
| 710 | */ | 711 | */ |
| 711 | lua_CFunction lua_getcfunction (lua_Object object) | 712 | lua_CFunction lua_getcfunction (lua_Object object) |
| 712 | { | 713 | { |
| 713 | if (object == LUA_NOOBJECT || tag(Address(object)) != LUA_T_CFUNCTION) | 714 | if (object == LUA_NOOBJECT || ((tag(Address(object)) != LUA_T_CFUNCTION) && |
| 715 | (tag(Address(object)) != LUA_T_CMARK))) | ||
| 714 | return NULL; | 716 | return NULL; |
| 715 | else return (fvalue(Address(object))); | 717 | else return (fvalue(Address(object))); |
| 716 | } | 718 | } |
| @@ -847,7 +849,10 @@ void lua_pushobject (lua_Object o) | |||
| 847 | { | 849 | { |
| 848 | if (o == LUA_NOOBJECT) | 850 | if (o == LUA_NOOBJECT) |
| 849 | lua_error("attempt to push a NOOBJECT"); | 851 | lua_error("attempt to push a NOOBJECT"); |
| 850 | luaI_pushobject(Address(o)); | 852 | *top = *Address(o); |
| 853 | if (tag(top) == LUA_T_MARK) tag(top) = LUA_T_FUNCTION; | ||
| 854 | else if (tag(top) == LUA_T_CMARK) tag(top) = LUA_T_CFUNCTION; | ||
| 855 | incr_top; | ||
| 851 | } | 856 | } |
| 852 | 857 | ||
| 853 | int lua_type (lua_Object o) | 858 | int lua_type (lua_Object o) |
