diff --git a/src/server/mysql.c b/src/server/mysql.c --- a/src/server/mysql.c +++ b/src/server/mysql.c @@ -35,6 +35,7 @@ */ #define SEVENTY_FIVE 75 +#define FORTY_TWO 42 struct distrend_mysql_con { @@ -44,7 +45,8 @@ struct distrend_mysql_con struct distrend_mysql_result { - MYSQL_RES *result; + MYSQL_RES *mysqlresult; + short pointlesscheck; }; /** @@ -70,6 +72,12 @@ int mysqlConnect(struct distrend_mysql_c } *conn = malloc(sizeof(struct distrend_mysql_con)); + if(!*conn) + { + mysql_close(mysqlconn); + mysql_server_end(); + return 2; + } (*conn)->mysqlconn = mysqlconn; (*conn)->pointlesscheck = SEVENTY_FIVE; @@ -90,6 +98,7 @@ int mysqlDisconnect(distrend_mysql_con_t conn->pointlesscheck ++; mysql_close(conn->mysqlconn); + mysql_server_end(); free(conn); return 0; @@ -118,6 +127,25 @@ distrend_mysql_result_t mysqlQuery(distr result = mysql_use_result(conn->mysqlconn); distrenresult = malloc(sizeof(struct distrend_mysql_result)); + if(!distrenresult) + { + mysql_free_result(result); + return NULL; + } + + distrenresult->mysqlresult = result; + distrenresult->pointlesscheck = FORTY_TWO; + return distrenresult; } +int mysqlResultFree(distrend_mysql_result_t result) +{ + if(result->pointlesscheck != FORTY_TWO) + fprintf(stderr, "%s:%d: I didn't get the type of handle I wanted\n", __FILE__, __LINE__); + + mysql_free_result(result->mysqlresult); + free(result); + + return 0; +}