diff options
author | Johannes Schlüter <johannes@php.net> | 2008-03-03 19:00:45 +0000 |
---|---|---|
committer | Johannes Schlüter <johannes@php.net> | 2008-03-03 19:00:45 +0000 |
commit | 1aa32afa8ab6d6f6011b322766d8aaf210b63501 (patch) | |
tree | a801e5192107ca9a3d1bbd64a60ef2228b02b6ea | |
parent | 0455ccb80552a053e2130a9107da9cc2c80eac82 (diff) | |
download | php-git-1aa32afa8ab6d6f6011b322766d8aaf210b63501.tar.gz |
MFH: Fix get_parent_class() of PDORow instances
-rwxr-xr-x | ext/pdo/pdo_stmt.c | 10 | ||||
-rw-r--r-- | ext/pdo/tests/pdo_035.phpt | 22 |
2 files changed, 29 insertions, 3 deletions
diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c index 45b1b6c0e3..356962de1d 100755 --- a/ext/pdo/pdo_stmt.c +++ b/ext/pdo/pdo_stmt.c @@ -2675,9 +2675,13 @@ static zend_class_entry *row_get_ce(zval *object TSRMLS_DC) static int row_get_classname(zval *object, char **class_name, zend_uint *class_name_len, int parent TSRMLS_DC) { - *class_name = estrndup("PDORow", sizeof("PDORow")-1); - *class_name_len = sizeof("PDORow")-1; - return 0; + if (parent) { + return FAILURE; + } else { + *class_name = estrndup("PDORow", sizeof("PDORow")-1); + *class_name_len = sizeof("PDORow")-1; + return SUCCESS; + } } static int row_compare(zval *object1, zval *object2 TSRMLS_DC) diff --git a/ext/pdo/tests/pdo_035.phpt b/ext/pdo/tests/pdo_035.phpt new file mode 100644 index 0000000000..c35c50432d --- /dev/null +++ b/ext/pdo/tests/pdo_035.phpt @@ -0,0 +1,22 @@ +--TEST-- +PDO Common: PDORow + get_parent_class() +--SKIPIF-- +<?php +if (!extension_loaded('pdo_sqlite')) die ("skip Need PDO_SQlite support"); +?> +--FILE-- +<?php +$db = new PDO('sqlite::memory:'); +$db->exec('CREATE TABLE test (id int)'); +$db->exec('INSERT INTO test VALUES (23)'); + +$stmt = $db->prepare('SELECT id FROM test'); +$stmt->execute(); +$result = $stmt->fetch(PDO::FETCH_LAZY); + +echo get_class($result), "\n"; +var_dump(get_parent_class($result)); +?> +--EXPECT-- +PDORow +bool(false) |