diff options
| author | Sara Golemon <pollita@php.net> | 2016-12-25 22:07:09 -0800 |
|---|---|---|
| committer | Sara Golemon <pollita@php.net> | 2016-12-25 22:07:09 -0800 |
| commit | fcd4c34cb3c32b55c2cbe2b5e8c784e5b2c0873e (patch) | |
| tree | 753d1edddce0216e6ca00f0560dee0e6a4dfd673 | |
| parent | 7b133e074c5912cf058dc545a3e14469d74b6644 (diff) | |
| parent | e926bf65076cb5c8da6bf8f32635f696de5ff9aa (diff) | |
| download | php-git-fcd4c34cb3c32b55c2cbe2b5e8c784e5b2c0873e.tar.gz | |
Merge branch 'PHP-7.0' into PHP-7.1
* PHP-7.0:
Fixes #65689. PDO_Firebrid / exec() does not free allocated statement.
| -rw-r--r-- | ext/pdo_firebird/firebird_driver.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/ext/pdo_firebird/firebird_driver.c b/ext/pdo_firebird/firebird_driver.c index b26939ccd2..91cd3593ea 100644 --- a/ext/pdo_firebird/firebird_driver.c +++ b/ext/pdo_firebird/firebird_driver.c @@ -238,14 +238,16 @@ static zend_long firebird_handle_doer(pdo_dbh_t *dbh, const char *sql, size_t sq /* execute the statement */ if (isc_dsql_execute2(H->isc_status, &H->tr, &stmt, PDO_FB_SQLDA_VERSION, &in_sqlda, &out_sqlda)) { RECORD_ERROR(dbh); - return -1; + ret = -1; + goto free_statement; } /* find out how many rows were affected */ if (isc_dsql_sql_info(H->isc_status, &stmt, sizeof(info_count), const_cast(info_count), sizeof(result), result)) { RECORD_ERROR(dbh); - return -1; + ret = -1; + goto free_statement; } if (result[0] == isc_info_sql_records) { @@ -265,6 +267,12 @@ static zend_long firebird_handle_doer(pdo_dbh_t *dbh, const char *sql, size_t sq RECORD_ERROR(dbh); } +free_statement: + + if (isc_dsql_free_statement(H->isc_status, &stmt, DSQL_drop)) { + RECORD_ERROR(dbh); + } + return ret; } /* }}} */ |
