8181 zend_throw_error(NULL, "No PostgreSQL connection opened yet"); \
8282 RETURN_THROWS(); \
8383 }
84- #define FETCH_DEFAULT_LINK () ( PGG(default_link) ? pgsql_link_from_obj(Z_OBJ_P(PGG(default_link))) : NULL )
84+ #define FETCH_DEFAULT_LINK () PGG(default_link)
8585
8686#define CHECK_PGSQL_LINK (link_handle ) \
8787 if (link_handle->conn == NULL) { \
@@ -293,10 +293,8 @@ static inline char * _php_pgsql_trim_result(PGconn * pgsql, char **buf)
293293 efree(msgbuf); \
294294} \
295295
296- static void php_pgsql_set_default_link (zval * link )
296+ static void php_pgsql_set_default_link (pgsql_link_handle * link )
297297{
298- GC_ADDREF (Z_OBJ_P (link ));
299-
300298 if (PGG (default_link ) != NULL ) {
301299 pgsql_link_free (FETCH_DEFAULT_LINK ());
302300 }
@@ -736,7 +734,7 @@ static void php_pgsql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
736734 */
737735 if (!(connect_type & PGSQL_CONNECT_FORCE_NEW )
738736 && (index_ptr = zend_hash_find_ptr (& PGG (regular_list ), str .s )) != NULL ) {
739- php_pgsql_set_default_link (index_ptr );
737+ php_pgsql_set_default_link (pgsql_link_from_obj ( Z_OBJ_P ( index_ptr )) );
740738 GC_ADDREF (Z_OBJ_P (index_ptr ));
741739 ZVAL_COPY (return_value , index_ptr );
742740
@@ -774,7 +772,7 @@ static void php_pgsql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
774772
775773 /* add it to the hash */
776774 ZVAL_COPY (& new_index_ptr , return_value );
777- zend_hash_update_mem (& PGG (regular_list ), str .s , ( void * ) & new_index_ptr , sizeof ( zval ) );
775+ zend_hash_update (& PGG (regular_list ), str .s , & new_index_ptr );
778776
779777 /* Keep track of link => hash mapping, so we can remove the hash entry from regular_list
780778 * when the connection is closed. This uses the address of the connection rather than the
@@ -791,7 +789,7 @@ static void php_pgsql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
791789 if (! PGG (ignore_notices ) && Z_TYPE_P (return_value ) == IS_OBJECT ) {
792790 PQsetNoticeProcessor (pgsql , _php_pgsql_notice_handler , (void * )(zend_uintptr_t )Z_OBJ_P (return_value )-> handle );
793791 }
794- php_pgsql_set_default_link (return_value );
792+ php_pgsql_set_default_link (pgsql_link_from_obj ( Z_OBJ_P ( return_value )) );
795793
796794cleanup :
797795 smart_str_free (& str );
@@ -852,8 +850,8 @@ PHP_FUNCTION(pg_close)
852850 if (!pgsql_link ) {
853851 link = FETCH_DEFAULT_LINK ();
854852 CHECK_DEFAULT_LINK (link );
855- pgsql_link_free (link );
856853 PGG (default_link ) = NULL ;
854+ pgsql_link_free (link );
857855 RETURN_TRUE ;
858856 }
859857
@@ -2379,12 +2377,13 @@ PHP_FUNCTION(pg_lo_create)
23792377 } else if ((Z_TYPE_P (pgsql_link ) == IS_OBJECT && instanceof_function (Z_OBJCE_P (pgsql_link ), pgsql_link_ce ))) {
23802378 link = Z_PGSQL_LINK_P (pgsql_link );
23812379 CHECK_PGSQL_LINK (link );
2382- pgsql = link -> conn ;
23832380 } else {
23842381 zend_argument_type_error (1 , "must be of type PgSql when the connection is provided" );
23852382 RETURN_THROWS ();
23862383 }
23872384
2385+ pgsql = link -> conn ;
2386+
23882387 if (oid ) {
23892388 switch (Z_TYPE_P (oid )) {
23902389 case IS_STRING :
@@ -3344,7 +3343,7 @@ PHP_FUNCTION(pg_escape_string)
33443343 RETURN_THROWS ();
33453344 }
33463345 link = Z_PGSQL_LINK_P (pgsql_link );
3347- CHECK_PGSQL_LINK (link );
3346+ CHECK_PGSQL_LINK (link );
33483347 break ;
33493348 }
33503349
0 commit comments