File tree Expand file tree Collapse file tree 2 files changed +24
-3
lines changed Expand file tree Collapse file tree 2 files changed +24
-3
lines changed Original file line number Diff line number Diff line change @@ -55,11 +55,24 @@ PHP_MINFO_FUNCTION(pdo);
55
55
56
56
#define LONG_CONST (c ) (zend_long) c
57
57
58
+ #define PDO_CONSTRUCT_CHECK_COND dbh->driver
59
+ #define PDO_CONSTRUCT_CHECK_FAIL () \
60
+ { \
61
+ zend_throw_error(NULL, "%s object is uninitialized", ZSTR_VAL(Z_OBJ(EX(This))->ce->name)); \
62
+ } \
63
+
58
64
#define PDO_CONSTRUCT_CHECK \
59
- if (!dbh->driver ) { \
60
- zend_throw_error(NULL, "%s object is uninitialized", ZSTR_VAL(Z_OBJ(EX(This))->ce->name) ); \
65
+ if (!(PDO_CONSTRUCT_CHECK_COND) ) { \
66
+ PDO_CONSTRUCT_CHECK_FAIL( ); \
61
67
RETURN_THROWS(); \
62
68
} \
63
69
64
70
71
+ #define PDO_CONSTRUCT_CHECK_WITH_CLEANUP (cleanup ) \
72
+ if (!(PDO_CONSTRUCT_CHECK_COND)) { \
73
+ PDO_CONSTRUCT_CHECK_FAIL(); \
74
+ goto cleanup; \
75
+ } \
76
+
77
+
65
78
#endif /* PHP_PDO_H */
Original file line number Diff line number Diff line change @@ -1252,7 +1252,7 @@ PHP_METHOD(PDO_PGSql_Ext, pgsqlSetNoticeCallback)
1252
1252
}
1253
1253
1254
1254
pdo_dbh_t * dbh = Z_PDO_DBH_P (ZEND_THIS );
1255
- PDO_CONSTRUCT_CHECK ;
1255
+ PDO_CONSTRUCT_CHECK_WITH_CLEANUP ( cleanup ) ;
1256
1256
1257
1257
pdo_pgsql_db_handle * H = (pdo_pgsql_db_handle * )dbh -> driver_data ;
1258
1258
@@ -1262,6 +1262,14 @@ PHP_METHOD(PDO_PGSql_Ext, pgsqlSetNoticeCallback)
1262
1262
H -> notice_callback = emalloc (sizeof (zend_fcall_info_cache ));
1263
1263
zend_fcc_dup (H -> notice_callback , & fcc );
1264
1264
}
1265
+
1266
+ return ;
1267
+
1268
+ cleanup :
1269
+ if (ZEND_FCC_INITIALIZED (fcc )) {
1270
+ zend_fcc_dtor (& fcc );
1271
+ }
1272
+ RETURN_THROWS ();
1265
1273
}
1266
1274
/* }}} */
1267
1275
You can’t perform that action at this time.
0 commit comments