From 6c0abfe077468985b07e515f4329a3e4da2b62b5 Mon Sep 17 00:00:00 2001 From: Christopher Jones Date: Fri, 15 Feb 2008 23:05:19 +0000 Subject: [PATCH] Bug #44113 (New collection creation can fail with OCI-22303) --- ext/oci8/oci8_collection.c | 10 +++++-- ext/oci8/tests/bug44113.phpt | 53 ++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 ext/oci8/tests/bug44113.phpt diff --git a/ext/oci8/oci8_collection.c b/ext/oci8/oci8_collection.c index 9095c5d2c6..5f56e376b1 100644 --- a/ext/oci8/oci8_collection.c +++ b/ext/oci8/oci8_collection.c @@ -44,9 +44,9 @@ /* {{{ php_oci_collection_create() Create and return connection handle */ -php_oci_collection * php_oci_collection_create(php_oci_connection* connection, char *tdo, int tdo_len, char *schema, int schema_len TSRMLS_DC) +php_oci_collection * php_oci_collection_create(php_oci_connection *connection, char *tdo, int tdo_len, char *schema, int schema_len TSRMLS_DC) { - dvoid *dschp1; + dvoid *dschp1 = NULL; dvoid *parmp1; dvoid *parmp2; php_oci_collection *collection; @@ -219,11 +219,17 @@ php_oci_collection * php_oci_collection_create(php_oci_connection* connection, c goto CLEANUP; } + /* free the describe handle (Bug #44113) */ + PHP_OCI_CALL(OCIHandleFree, ((dvoid *) dschp1, OCI_HTYPE_DESCRIBE)); PHP_OCI_REGISTER_RESOURCE(collection, le_collection); return collection; CLEANUP: + if (dschp1) { + /* free the describe handle (Bug #44113) */ + PHP_OCI_CALL(OCIHandleFree, ((dvoid *) dschp1, OCI_HTYPE_DESCRIBE)); + } php_oci_error(connection->err, connection->errcode TSRMLS_CC); php_oci_collection_close(collection TSRMLS_CC); return NULL; diff --git a/ext/oci8/tests/bug44113.phpt b/ext/oci8/tests/bug44113.phpt new file mode 100644 index 0000000000..646f09b7c7 --- /dev/null +++ b/ext/oci8/tests/bug44113.phpt @@ -0,0 +1,53 @@ +--TEST-- +Bug #44113 (New collection creation can fail with OCI-22303) +--SKIPIF-- + +--FILE-- + +--EXPECT-- +Completed 70000 +Done -- 2.50.1