File tree 2 files changed +22
-3
lines changed
2 files changed +22
-3
lines changed Original file line number Diff line number Diff line change @@ -55,11 +55,22 @@ 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
+ zend_throw_error(NULL, "%s object is uninitialized", ZSTR_VAL(Z_OBJ(EX(This))->ce->name));
61
+
58
62
#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)); \
63
+ if (!(PDO_CONSTRUCT_CHECK_COND) ) { \
64
+ PDO_CONSTRUCT_CHECK_FAIL \
61
65
RETURN_THROWS(); \
62
66
} \
63
67
64
68
69
+ #define PDO_CONSTRUCT_CHECK_WITH_CLEANUP (cleanup ) \
70
+ if (!(PDO_CONSTRUCT_CHECK_COND)) { \
71
+ PDO_CONSTRUCT_CHECK_FAIL \
72
+ goto cleanup; \
73
+ } \
74
+
75
+
65
76
#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