diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1994-11-17 19:23:43 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1994-11-17 19:23:43 -0200 |
| commit | 1929ddcf49b948ed8082cd375f7f7bf0b8a15bee (patch) | |
| tree | 9578d04056107bea60dee410d3889d7745d8764d /opcode.c | |
| parent | aa4cd37adfdeb84b8137d3fccdb28a49a3b6d9e5 (diff) | |
| download | lua-1929ddcf49b948ed8082cd375f7f7bf0b8a15bee.tar.gz lua-1929ddcf49b948ed8082cd375f7f7bf0b8a15bee.tar.bz2 lua-1929ddcf49b948ed8082cd375f7f7bf0b8a15bee.zip | |
userdata can have different tags
Diffstat (limited to 'opcode.c')
| -rw-r--r-- | opcode.c | 9 |
1 files changed, 5 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.15 1994/11/17 16:41:42 roberto Exp roberto $"; | 6 | char *rcs_opcode="$Id: opcode.c,v 3.16 1994/11/17 19:43:34 roberto Exp roberto $"; |
| 7 | 7 | ||
| 8 | #include <setjmp.h> | 8 | #include <setjmp.h> |
| 9 | #include <stdio.h> | 9 | #include <stdio.h> |
| @@ -536,7 +536,7 @@ lua_CFunction lua_getcfunction (lua_Object object) | |||
| 536 | void *lua_getuserdata (lua_Object object) | 536 | void *lua_getuserdata (lua_Object object) |
| 537 | { | 537 | { |
| 538 | if (object == 0) return NULL; | 538 | if (object == 0) return NULL; |
| 539 | if (tag(Address(object)) != LUA_T_USERDATA) return NULL; | 539 | if (tag(Address(object)) < LUA_T_USERDATA) return NULL; |
| 540 | else return (uvalue(Address(object))); | 540 | else return (uvalue(Address(object))); |
| 541 | } | 541 | } |
| 542 | 542 | ||
| @@ -621,10 +621,11 @@ int lua_pushcfunction (lua_CFunction fn) | |||
| 621 | /* | 621 | /* |
| 622 | ** Push an object (tag=userdata) to stack. Return 0 on success or 1 on error. | 622 | ** Push an object (tag=userdata) to stack. Return 0 on success or 1 on error. |
| 623 | */ | 623 | */ |
| 624 | int lua_pushuserdata (void *u) | 624 | int lua_pushusertag (void *u, int tag) |
| 625 | { | 625 | { |
| 626 | lua_checkstack(top-stack+1); | 626 | lua_checkstack(top-stack+1); |
| 627 | tag(top) = LUA_T_USERDATA; uvalue(top++) = u; | 627 | if (tag < LUA_T_USERDATA) return 1; |
| 628 | tag(top) = tag; uvalue(top++) = u; | ||
| 628 | return 0; | 629 | return 0; |
| 629 | } | 630 | } |
| 630 | 631 | ||
