summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStanislav Malyshev <stas@php.net>2004-05-16 16:34:27 +0000
committerStanislav Malyshev <stas@php.net>2004-05-16 16:34:27 +0000
commite145ab54dab48d905e31b4e6e619ba5eb9fb198c (patch)
treedf10e4568be6bd08f669319e76294f8d6c2c43e2
parent49a1413f504e503031c11e77b9b64a55f2213932 (diff)
downloadphp-git-e145ab54dab48d905e31b4e6e619ba5eb9fb198c.tar.gz
attempt to fix double free on failed query
-rw-r--r--ext/sqlite/sqlite.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/ext/sqlite/sqlite.c b/ext/sqlite/sqlite.c
index 2f87ed90c0..aee838384f 100644
--- a/ext/sqlite/sqlite.c
+++ b/ext/sqlite/sqlite.c
@@ -1357,7 +1357,10 @@ PHP_FUNCTION(sqlite_array_query)
rres = (struct php_sqlite_result *)emalloc(sizeof(*rres));
sqlite_query(db, sql, sql_len, mode, 0, NULL, rres TSRMLS_CC);
if (db->last_err_code != SQLITE_OK) {
- efree(rres);
+ if(!rres->vm) {
+ /* no query happened - it's out responsibility to free it */
+ efree(rres);
+ }
RETURN_FALSE;
}