]> granicus.if.org Git - php/commitdiff
Fixed memory leak
authorIlia Alshanetsky <iliaa@php.net>
Sat, 9 Jul 2005 04:21:14 +0000 (04:21 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Sat, 9 Jul 2005 04:21:14 +0000 (04:21 +0000)
ext/pdo_mysql/mysql_statement.c

index 5a6dd2fe763e85d3f5ea9fec6572fa9a7c11026d..3c5a4933c72439a01933ae10db9761efcedd4cbb 100755 (executable)
@@ -96,8 +96,18 @@ static int pdo_mysql_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC)
                        S->result = mysql_stmt_result_metadata(S->stmt);
                        if (S->result) {
                                S->fields = mysql_fetch_fields(S->result);
-                               stmt->column_count = (int)mysql_num_fields(S->result);
 
+                               if (S->bound_result) {
+                                       int i;
+                                       for (i = 0; i < stmt->column_count; i++) {
+                                               efree(S->bound_result[i].buffer); 
+                                       }
+                                       efree(S->bound_result);
+                                       efree(S->out_null);
+                                       efree(S->out_length);
+                               }
+
+                               stmt->column_count = (int)mysql_num_fields(S->result);
                                S->bound_result = ecalloc(stmt->column_count, sizeof(MYSQL_BIND));
                                S->out_null = ecalloc(stmt->column_count, sizeof(my_bool));
                                S->out_length = ecalloc(stmt->column_count, sizeof(unsigned long));