dbd/mysql/statement.c

changeset 9
06eb2850703f
parent 7
4480ae002881
child 10
3aa8a37a3dd8
--- a/dbd/mysql/statement.c	Sat Nov 29 06:38:16 2008 +0000
+++ b/dbd/mysql/statement.c	Mon Dec 01 02:56:40 2008 +0000
@@ -90,6 +90,7 @@
 	const char *str = NULL;
 	size_t *str_len = NULL;
 	double *num = NULL;
+	int *boolean = NULL;
 
 	switch(type) {
 	    case LUA_TNIL:
@@ -97,13 +98,22 @@
 		bind[i].is_null = (my_bool*)1;
 		break;
 
+	    case LUA_TBOOLEAN:
+		boolean = (int *)malloc(sizeof(int));
+		*boolean = lua_toboolean(L, p);
+		bind[i].buffer_type = MYSQL_TYPE_LONG;
+		bind[i].is_null = (my_bool*)0;
+		bind[i].buffer = (char *)boolean;
+		bind[i].length = 0;
+		break;
+
 	    case LUA_TNUMBER:
 		/*
 		 * num needs to be it's own 
 		 * memory here
                  */
 		num = (double *)malloc(sizeof(double));
-		*num = luaL_checknumber(L, p);
+		*num = lua_tonumber(L, p);
 
 		bind[i].buffer_type = MYSQL_TYPE_DOUBLE;
 		bind[i].is_null = (my_bool*)0;
@@ -113,7 +123,7 @@
 
 	    case LUA_TSTRING:
 		str_len = malloc(sizeof(size_t));
-		str = luaL_checklstring(L, p, str_len);
+		str = lua_tolstring(L, p, str_len);
 
 		bind[i].buffer_type = MYSQL_TYPE_STRING;
 		bind[i].is_null = (my_bool*)0;
@@ -151,7 +161,7 @@
 	     * extended with other types they
 	     * will need to be added here
              */
-	    if (bind[i].buffer_type == MYSQL_TYPE_DOUBLE) {
+	    if (bind[i].buffer_type == MYSQL_TYPE_DOUBLE || bind[i].buffer_type == MYSQL_TYPE_LONG) {
 		if (bind[i].buffer) 
 		    free(bind[i].buffer);
 	    } else if (bind[i].buffer_type == MYSQL_TYPE_STRING) {

mercurial