dbd/oracle/statement.c

changeset 27
1d2369ebee21
parent 21
7956401a0c5e
child 30
8599f34c139b
--- 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);

mercurial