sixd Fri Feb 15 23:49:21 2008 UTC Modified files: /php-src/ext/oci8 oci8_collection.c /php-src/ext/oci8/tests bug44113.phpt Log: MHB: Bug #44113 (New collection creation can fail with OCI-22303) http://cvs.php.net/viewvc.cgi/php-src/ext/oci8/oci8_collection.c?r1=1.16&r2=1.17&diff_format=u Index: php-src/ext/oci8/oci8_collection.c diff -u php-src/ext/oci8/oci8_collection.c:1.16 php-src/ext/oci8/oci8_collection.c:1.17 --- php-src/ext/oci8/oci8_collection.c:1.16 Mon Dec 31 07:12:12 2007 +++ php-src/ext/oci8/oci8_collection.c Fri Feb 15 23:49:21 2008 @@ -25,7 +25,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: oci8_collection.c,v 1.16 2007/12/31 07:12:12 sebastian Exp $ */ +/* $Id: oci8_collection.c,v 1.17 2008/02/15 23:49:21 sixd Exp $ */ @@ -44,9 +44,9 @@ /* {{{ php_oci_collection_create() Create and return connection handle */ -php_oci_collection * php_oci_collection_create(php_oci_connection* connection, zstr tdo, int tdo_len, zstr schema, int schema_len TSRMLS_DC) +php_oci_collection * php_oci_collection_create(php_oci_connection *connection, zstr tdo, int tdo_len, zstr schema, int schema_len TSRMLS_DC) { - dvoid *dschp1; + dvoid *dschp1 = NULL; dvoid *parmp1; dvoid *parmp2; php_oci_collection *collection; @@ -219,11 +219,17 @@ 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; http://cvs.php.net/viewvc.cgi/php-src/ext/oci8/tests/bug44113.phpt?r1=1.1&r2=1.2&diff_format=u Index: php-src/ext/oci8/tests/bug44113.phpt diff -u /dev/null php-src/ext/oci8/tests/bug44113.phpt:1.2 --- /dev/null Fri Feb 15 23:49:21 2008 +++ php-src/ext/oci8/tests/bug44113.phpt Fri Feb 15 23:49:21 2008 @@ -0,0 +1,53 @@ +--TEST-- +Bug #44113 (New collection creation can fail with OCI-22303) +--SKIPIF-- +<?php if (!extension_loaded('oci8')) die ("skip no oci8 extension"); ?> +--FILE-- +<?php + +require dirname(__FILE__).'/connect.inc'; + +// Initialization + +$stmtarray = array( + "create or replace type bug44113_list_t as table of number" +); + +foreach ($stmtarray as $stmt) { + $s = oci_parse($c, $stmt); + @oci_execute($s); +} + +// Run Test +// The test can take some time to complete and can exceed PHP's test +// timout limit on slow networks. + +for ($x = 0; $x < 70000; $x++) +{ + if (!($var = oci_new_collection($c, 'BUG44113_LIST_T'))) { + print "Failed new collection creation on $x\n"; + break; + } +} + +print "Completed $x\n"; + +// Cleanup + +$stmtarray = array( + "drop type bug44113_list_t" +); + +foreach ($stmtarray as $stmt) { + $s = oci_parse($c, $stmt); + oci_execute($s); +} + +oci_close($c); + +echo "Done\n"; + +?> +--EXPECT-- +Completed 70000 +Done
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php