From 37f146cf91ffc62db08a0956ee3f5429240d9a44 Mon Sep 17 00:00:00 2001 From: paraboul Date: Sat, 5 Mar 2011 21:50:40 +0100 Subject: [PATCH] SSJS : APE doesn't pre-allocate memory for MySQL queue requests --- modules/libape-spidermonkey.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/modules/libape-spidermonkey.c b/modules/libape-spidermonkey.c index 21779f90..213c40f7 100644 --- a/modules/libape-spidermonkey.c +++ b/modules/libape-spidermonkey.c @@ -2460,12 +2460,20 @@ static void apemysql_shift_queue(struct _ape_mysql_data *myhandle) { struct _ape_mysql_queue *queue; int ret; + int basemem = (1024*1024); + MYSAC_RES *res; + char *res_buf; + if (myhandle->queue.head == NULL || myhandle->state != SQL_READY_FOR_QUERY) { return; } - + res_buf = xmalloc(sizeof(char) * basemem); + res = mysac_init_res(res_buf, basemem); + queue = myhandle->queue.head; + queue->res = res; + myhandle->state = SQL_NEED_QUEUE; myhandle->data = queue; @@ -2492,19 +2500,14 @@ static void apemysql_shift_queue(struct _ape_mysql_data *myhandle) static struct _ape_mysql_queue *apemysql_push_queue(struct _ape_mysql_data *myhandle, char *query, unsigned int query_len, jsval callback) { struct _ape_mysql_queue *nqueue; - int basemem = (1024*1024); - MYSAC_RES *res; - char *res_buf = xmalloc(sizeof(char) * basemem); - - res = mysac_init_res(res_buf, basemem); - + nqueue = xmalloc(sizeof(*nqueue)); nqueue->next = NULL; nqueue->query = query; nqueue->query_len = query_len; nqueue->callback = callback; - nqueue->res = res; + nqueue->res = NULL; if (myhandle->queue.foot == NULL) { myhandle->queue.head = nqueue;