@@ -67,9 +67,9 @@ void pdo_throw_exception(unsigned int driver_errcode, char *driver_errmsg, pdo_e
6767
6868PDO_API bool php_pdo_stmt_valid_db_obj_handle (const pdo_stmt_t * stmt )
6969{
70- return ! Z_ISUNDEF ( stmt -> database_object_handle )
71- && IS_OBJ_VALID (EG (objects_store ).object_buckets [Z_OBJ_HANDLE ( stmt -> database_object_handle ) ])
72- && !(OBJ_FLAGS (Z_OBJ ( stmt -> database_object_handle ) ) & IS_OBJ_FREE_CALLED );
70+ return stmt -> database_object_handle != NULL
71+ && IS_OBJ_VALID (EG (objects_store ).object_buckets [stmt -> database_object_handle -> handle ])
72+ && !(OBJ_FLAGS (stmt -> database_object_handle ) & IS_OBJ_FREE_CALLED );
7373}
7474
7575void pdo_raise_impl_error (pdo_dbh_t * dbh , pdo_stmt_t * stmt , pdo_error_type sqlstate , const char * supp ) /* {{{ */
@@ -657,7 +657,8 @@ PHP_METHOD(PDO, prepare)
657657 stmt -> default_fetch_type = dbh -> default_fetch_type ;
658658 stmt -> dbh = dbh ;
659659 /* give it a reference to me */
660- ZVAL_OBJ_COPY (& stmt -> database_object_handle , & dbh_obj -> std );
660+ GC_ADDREF (& dbh_obj -> std );
661+ stmt -> database_object_handle = & dbh_obj -> std ;
661662 /* we haven't created a lazy object yet */
662663 ZVAL_UNDEF (& stmt -> lazy_object_ref );
663664
@@ -1222,7 +1223,8 @@ PHP_METHOD(PDO, query)
12221223 stmt -> default_fetch_type = dbh -> default_fetch_type ;
12231224 stmt -> dbh = dbh ;
12241225 /* give it a reference to me */
1225- ZVAL_OBJ_COPY (& stmt -> database_object_handle , & dbh_obj -> std );
1226+ GC_ADDREF (& dbh_obj -> std );
1227+ stmt -> database_object_handle = & dbh_obj -> std ;
12261228 /* we haven't created a lazy object yet */
12271229 ZVAL_UNDEF (& stmt -> lazy_object_ref );
12281230
@@ -1252,8 +1254,8 @@ PHP_METHOD(PDO, query)
12521254 /* something broke */
12531255 dbh -> query_stmt = stmt ;
12541256 ZVAL_OBJ (& dbh -> query_stmt_zval , Z_OBJ_P (return_value ));
1255- Z_DELREF (stmt -> database_object_handle );
1256- ZVAL_UNDEF ( & stmt -> database_object_handle ) ;
1257+ GC_DELREF (stmt -> database_object_handle );
1258+ stmt -> database_object_handle = NULL ;
12571259 PDO_HANDLE_STMT_ERR ();
12581260 } else {
12591261 PDO_HANDLE_DBH_ERR ();
0 commit comments