diff -r cf847efefdb5 -r 1d2369ebee21 dbd/oracle/statement.c --- a/dbd/oracle/statement.c Mon Dec 22 07:36:54 2008 +0000 +++ b/dbd/oracle/statement.c Mon Dec 22 07:52:04 2008 +0000 @@ -68,6 +68,11 @@ statement->stmt = NULL; } + if (statement->bind) { + free(statement->bind); + statement->bind = NULL; + } + lua_pushboolean(L, ok); return 1; } @@ -254,8 +259,9 @@ return 0; } - bind = (bindparams_t *)malloc(sizeof(bindparams_t) * statement->num_columns); - memset(bind, 0, sizeof(bindparams_t) * statement->num_columns); + statement->bind = (bindparams_t *)malloc(sizeof(bindparams_t) * statement->num_columns); + memset(statement->bind, 0, sizeof(bindparams_t) * statement->num_columns); + bind = statement->bind; for (i = 0; i < statement->num_columns; i++) { rc = OCIParamGet(statement->stmt, OCI_HTYPE_STMT, statement->conn->err, (dvoid **)&bind[i].param, i+1); @@ -434,6 +440,7 @@ statement->conn = conn; statement->stmt = stmt; statement->num_columns = 0; + statement->bind = NULL; luaL_getmetatable(L, DBD_ORACLE_STATEMENT); lua_setmetatable(L, -2);