From: Nikita Popov Date: Wed, 20 May 2015 16:00:37 +0000 (+0200) Subject: Expose pdo stmt ctor args to gc X-Git-Tag: PRE_PHP7_NSAPI_REMOVAL~42^2~29 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b081da657e4c334edce83e2548df00f502fb4a90;p=php Expose pdo stmt ctor args to gc These very commonly contain a reference to the PDO object itself. --- diff --git a/ext/pdo/pdo_dbh.c b/ext/pdo/pdo_dbh.c index 8189473524..76a5eb4520 100644 --- a/ext/pdo/pdo_dbh.c +++ b/ext/pdo/pdo_dbh.c @@ -1364,6 +1364,14 @@ static int dbh_compare(zval *object1, zval *object2) return -1; } +static HashTable *dbh_get_gc(zval *object, zval **gc_data, int *gc_count) +{ + pdo_dbh_t *dbh = Z_PDO_DBH_P(object); + *gc_data = &dbh->def_stmt_ctor_args; + *gc_count = 1; + return zend_std_get_properties(object); +} + static zend_object_handlers pdo_dbh_object_handlers; static void pdo_dbh_free_storage(zend_object *std); @@ -1381,6 +1389,7 @@ void pdo_dbh_init(void) pdo_dbh_object_handlers.free_obj = pdo_dbh_free_storage; pdo_dbh_object_handlers.get_method = dbh_method_get; pdo_dbh_object_handlers.compare_objects = dbh_compare; + pdo_dbh_object_handlers.get_gc = dbh_get_gc; REGISTER_PDO_CLASS_CONST_LONG("PARAM_BOOL", (zend_long)PDO_PARAM_BOOL); REGISTER_PDO_CLASS_CONST_LONG("PARAM_NULL", (zend_long)PDO_PARAM_NULL);