Skip to content

Commit 45fdd2b

Browse files
committed
PdoPgsql::setNoticeCallback(): theorical memory leak
c265b90#r142275842 Redefines PDO_CONSTRUCT_CHECK to make room for an optional cleanup
1 parent 6dee3db commit 45fdd2b

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

ext/pdo/php_pdo.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,14 @@ PHP_MINFO_FUNCTION(pdo);
5555

5656
#define LONG_CONST(c) (zend_long) c
5757

58-
#define PDO_CONSTRUCT_CHECK \
58+
#define PDO_CONSTRUCT_CHECK_WITH_CLEANUP(cleanup) \
5959
if (!dbh->driver) { \
6060
zend_throw_error(NULL, "%s object is uninitialized", ZSTR_VAL(Z_OBJ(EX(This))->ce->name)); \
61+
cleanup \
6162
RETURN_THROWS(); \
6263
} \
6364

6465

66+
#define PDO_CONSTRUCT_CHECK PDO_CONSTRUCT_CHECK_WITH_CLEANUP()
67+
6568
#endif /* PHP_PDO_H */

ext/pdo_pgsql/pgsql_driver.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1252,7 +1252,7 @@ PHP_METHOD(PDO_PGSql_Ext, pgsqlSetNoticeCallback)
12521252
}
12531253

12541254
pdo_dbh_t *dbh = Z_PDO_DBH_P(ZEND_THIS);
1255-
PDO_CONSTRUCT_CHECK;
1255+
PDO_CONSTRUCT_CHECK_WITH_CLEANUP(zend_fcc_dtor(&fcc););
12561256

12571257
pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)dbh->driver_data;
12581258

0 commit comments

Comments
 (0)