diff options
author | Tomas Guisasola <tomas@luaforge.net> | 2003-09-03 10:40:27 +0000 |
---|---|---|
committer | Tomas Guisasola <tomas@luaforge.net> | 2003-09-03 10:40:27 +0000 |
commit | d404b6ffbd7dee5fa23196bd9ee39c79a285c4e6 (patch) | |
tree | e60fb101efa30e6a1cb1b12e55c1880a618acda0 /lualdap/src/lualdap.c | |
parent | Correcao de comentario. (diff) | |
download | lualdap-d404b6ffbd7dee5fa23196bd9ee39c79a285c4e6.tar.xz lualdap-d404b6ffbd7dee5fa23196bd9ee39c79a285c4e6.zip |
Correcao do bug de desalocacao do objeto search.
Eliminacao do campo `closed' do objeto search.
Diffstat (limited to 'lualdap/src/lualdap.c')
-rwxr-xr-x | lualdap/src/lualdap.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/lualdap/src/lualdap.c b/lualdap/src/lualdap.c index cb9f342..5ecb054 100755 --- a/lualdap/src/lualdap.c +++ b/lualdap/src/lualdap.c @@ -1,6 +1,6 @@ /* ** LuaLDAP -** $Id: lualdap.c,v 1.22 2003-09-03 09:48:44 tomas Exp $ +** $Id: lualdap.c,v 1.23 2003-09-03 10:40:27 tomas Exp $ */ #include <stdlib.h> @@ -49,7 +49,6 @@ typedef struct { /* LDAP search context information */ typedef struct { - int closed; int conn; /* conn_data reference */ int msgid; } search_data; @@ -97,7 +96,7 @@ static conn_data *getconnection (lua_State *L) { static search_data *getsearch (lua_State *L) { /* don't need to check upvalue's integrity */ search_data *search = (search_data *)lua_touserdata (L, lua_upvalueindex (1)); - luaL_argcheck (L,!search->closed,1,LUALDAP_PREFIX"LDAP search is closed"); + luaL_argcheck (L,search->conn!=LUA_NOREF,1,LUALDAP_PREFIX"LDAP search is closed"); return search; } @@ -713,23 +712,23 @@ static int string2scope (lua_State *L, const char *s) { ** Close the search object. */ static int lualdap_search_close (lua_State *L) { - search_data *search = (search_data *)luaL_checkudata (L, lua_upvalueindex (1), LUALDAP_SEARCH_METATABLE); + search_data *search = (search_data *)luaL_checkudata (L, 1, LUALDAP_SEARCH_METATABLE); luaL_argcheck (L, search!=NULL, 1, LUALDAP_PREFIX"LDAP search expected"); - if (search->closed) + if (search->conn == LUA_NOREF) return 0; luaL_unref (L, LUA_REGISTRYINDEX, search->conn); + search->conn = LUA_NOREF; lua_pushnumber (L, 1); return 1; } /* -** Create a search object. +** Create a search object and leaves it on top of the stack. */ static void create_search (lua_State *L, int conn_index, int msgid) { search_data *search = (search_data *)lua_newuserdata (L, sizeof (search_data)); lualdap_setmeta (L, LUALDAP_SEARCH_METATABLE); - search->closed = 0; search->conn = LUA_NOREF; search->msgid = msgid; lua_pushvalue (L, conn_index); |