diff -r 0b805fda1c91 -r 06eb2850703f dbd/mysql/statement.c --- 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) {