From 1892d92d68ec62122816a83b019c0d96fd79005f Mon Sep 17 00:00:00 2001 From: Pierrick Charron Date: Tue, 27 Apr 2010 05:56:56 +0000 Subject: [PATCH] Fixed bug #51670 getColumnMeta causes segfault when re-executing query after calling nextRowset --- ext/pdo/pdo_stmt.c | 2 ++ ext/pdo_mysql/tests/bug_51670.phpt | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 ext/pdo_mysql/tests/bug_51670.phpt 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! + -- 2.40.0