From: Pierrick Charron Date: Tue, 27 Apr 2010 05:56:56 +0000 (+0000) Subject: Fixed bug #51670 getColumnMeta causes segfault when re-executing query after calling... X-Git-Tag: php-5.4.0alpha1~191^2~1646 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1892d92d68ec62122816a83b019c0d96fd79005f;p=php Fixed bug #51670 getColumnMeta causes segfault when re-executing query after calling nextRowset --- diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c index 49199e7f73..1213722bca 100755 --- a/ext/pdo/pdo_stmt.c +++ b/ext/pdo/pdo_stmt.c @@ -2080,6 +2080,8 @@ static int pdo_stmt_do_next_rowset(pdo_stmt_t *stmt TSRMLS_DC) } if (!stmt->methods->next_rowset(stmt TSRMLS_CC)) { + /* Set the executed flag to 0 to reallocate columns on next execute */ + stmt->executed = 0; return 0; } diff --git a/ext/pdo_mysql/tests/bug_51670.phpt b/ext/pdo_mysql/tests/bug_51670.phpt new file mode 100644 index 0000000000..d5387e6c6f --- /dev/null +++ b/ext/pdo_mysql/tests/bug_51670.phpt @@ -0,0 +1,24 @@ +--TEST-- +Bug #51670 (getColumnMeta causes segfault when re-executing query after calling nextRowset) +--SKIPIF-- + +--FILE-- +prepare('SELECT 1 AS num'); +$query->execute(); +if(!is_array($query->getColumnMeta(0))) die('FAIL!'); +$query->nextRowset(); +$query->execute(); +if(!is_array($query->getColumnMeta(0))) die('FAIL!'); +echo 'done!'; +?> +--EXPECTF-- +done! +