]> granicus.if.org Git - php/commitdiff
fix leaks in row_get_properties()
authorAntony Dovgal <tony2001@php.net>
Tue, 17 Apr 2007 17:00:16 +0000 (17:00 +0000)
committerAntony Dovgal <tony2001@php.net>
Tue, 17 Apr 2007 17:00:16 +0000 (17:00 +0000)
thanks to Kellen Bombardier for noticing

ext/pdo/pdo_stmt.c

index 658d99ee62e0a7ac65ba2c2006e4201d9be59856..13170a30342b7bfe3603b0e0dad83d771e704b33 100755 (executable)
@@ -2525,28 +2525,18 @@ static void row_prop_or_dim_delete(zval *object, zval *offset TSRMLS_DC)
 
 static HashTable *row_get_properties(zval *object TSRMLS_DC)
 {
-       zval *tmp;
        pdo_stmt_t * stmt = (pdo_stmt_t *) zend_object_store_get_object(object TSRMLS_CC);
        int i;
-       HashTable *ht;
-
-       MAKE_STD_ZVAL(tmp);
-       array_init(tmp);
 
        for (i = 0; i < stmt->column_count; i++) {
                zval *val;
                MAKE_STD_ZVAL(val);
                fetch_value(stmt, val, i, NULL TSRMLS_CC);
 
-               add_assoc_zval(tmp, stmt->columns[i].name, val);
+               zend_hash_update(stmt->properties, stmt->columns[i].name, stmt->columns[i].namelen + 1, (void *)&val, sizeof(zval *), NULL);
        }
 
-       ht = Z_ARRVAL_P(tmp);
-
-       ZVAL_NULL(tmp);
-       FREE_ZVAL(tmp);
-
-       return ht;
+       return stmt->properties;
 }
 
 static union _zend_function *row_method_get(