summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schlüter <johannes@php.net>2008-03-03 19:00:45 +0000
committerJohannes Schlüter <johannes@php.net>2008-03-03 19:00:45 +0000
commit1aa32afa8ab6d6f6011b322766d8aaf210b63501 (patch)
treea801e5192107ca9a3d1bbd64a60ef2228b02b6ea
parent0455ccb80552a053e2130a9107da9cc2c80eac82 (diff)
downloadphp-git-1aa32afa8ab6d6f6011b322766d8aaf210b63501.tar.gz
MFH: Fix get_parent_class() of PDORow instances
-rwxr-xr-xext/pdo/pdo_stmt.c10
-rw-r--r--ext/pdo/tests/pdo_035.phpt22
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)