diff --git a/source/sqlsrv/conn.cpp b/source/sqlsrv/conn.cpp index b083aa1e7..7009a3376 100644 --- a/source/sqlsrv/conn.cpp +++ b/source/sqlsrv/conn.cpp @@ -812,9 +812,13 @@ PHP_FUNCTION( sqlsrv_close ) // cause any variables still holding a reference to this to be invalid so they cause // an error when passed to a sqlsrv function. There's nothing we can do if the // removal fails, so we just log it and move on. - if( zend_list_close( Z_RES_P( conn_r ) ) == FAILURE ) { - LOG( SEV_ERROR, "Failed to remove connection resource %1!d!", Z_RES_HANDLE_P( conn_r )); +#if PHP_VERSION_ID < 80000 + if (zend_list_close(Z_RES_P(conn_r)) == FAILURE) { + LOG(SEV_ERROR, "Failed to remove connection resource %1!d!", Z_RES_HANDLE_P(conn_r)); } +#else + zend_list_close(Z_RES_P(conn_r)); +#endif // when conn_r is first parsed in zend_parse_parameters, conn_r becomes a zval that points to a zend_resource with a refcount of 2 // need to DELREF here so the refcount becomes 1 and conn_r can be appropriate destroyed by the garbage collector when it goes out of scope @@ -1265,9 +1269,14 @@ PHP_FUNCTION( sqlsrv_query ) void free_stmt_resource( _Inout_ zval* stmt_z ) { - if( FAILURE == zend_list_close( Z_RES_P( stmt_z ))) { +#if PHP_VERSION_ID < 80000 + if (FAILURE == zend_list_close(Z_RES_P(stmt_z))) { LOG(SEV_ERROR, "Failed to remove stmt resource %1!d!", Z_RES_HANDLE_P(stmt_z)); } +#else + zend_list_close(Z_RES_P(stmt_z)); +#endif + ZVAL_NULL( stmt_z ); zval_ptr_dtor(stmt_z); } @@ -1317,9 +1326,13 @@ void sqlsrv_conn_close_stmts( _Inout_ ss_sqlsrv_conn* conn ) // this would call the destructor on the statement. // There's nothing we can do if the removal fails, so we just log it and move on. - if( zend_list_close( Z_RES_P(rsrc_ptr) ) == FAILURE ) { +#if PHP_VERSION_ID < 80000 + if (zend_list_close(Z_RES_P(rsrc_ptr)) == FAILURE) { LOG(SEV_ERROR, "Failed to remove statement resource %1!d! when closing the connection", Z_RES_HANDLE_P(rsrc_ptr)); } +#else + zend_list_close(Z_RES_P(rsrc_ptr)); +#endif } ZEND_HASH_FOREACH_END(); zend_hash_destroy( conn->stmts ); diff --git a/source/sqlsrv/stmt.cpp b/source/sqlsrv/stmt.cpp index ea1bfe546..a9b4590bf 100644 --- a/source/sqlsrv/stmt.cpp +++ b/source/sqlsrv/stmt.cpp @@ -1396,9 +1396,13 @@ PHP_FUNCTION( sqlsrv_free_stmt ) } // delete the resource from Zend's master list, which will trigger the statement's destructor - if( zend_list_close( Z_RES_P(stmt_r) ) == FAILURE ) { - LOG( SEV_ERROR, "Failed to remove stmt resource %1!d!", Z_RES_P( stmt_r )->handle); +#if PHP_VERSION_ID < 80000 + if (zend_list_close(Z_RES_P(stmt_r)) == FAILURE) { + LOG(SEV_ERROR, "Failed to remove stmt resource %1!d!", Z_RES_P(stmt_r)->handle); } +#else + zend_list_close(Z_RES_P(stmt_r)); +#endif // when stmt_r is first parsed in zend_parse_parameters, stmt_r becomes a zval that points to a zend_resource with a refcount of 2 // need to DELREF here so the refcount becomes 1 and stmt_r can be appropriate destroyed by the garbage collector when it goes out of scope