diff options
Diffstat (limited to 'ext/pdo_firebird/firebird_driver.c')
| -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;  }  /* }}} */  | 
