pajoye Wed, 21 Oct 2009 06:42:08 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=289821
Log: - fix leak in DL on error (windows) Changed paths: U php/php-src/branches/PHP_5_3/NEWS U php/php-src/branches/PHP_5_3/ext/standard/dl.c U php/php-src/trunk/ext/standard/dl.c Modified: php/php-src/branches/PHP_5_3/NEWS =================================================================== --- php/php-src/branches/PHP_5_3/NEWS 2009-10-21 06:03:12 UTC (rev 289820) +++ php/php-src/branches/PHP_5_3/NEWS 2009-10-21 06:42:08 UTC (rev 289821) @@ -8,6 +8,9 @@ - Implemented FR #49253 (added support for libcurl's CERTINFO option). (Linus Nielsen Feltzing <li...@haxx.se>) +- Fixed memory leak in extension loading when an error occurs on Windows. + (Pierre) + - Fixed bug #49855 (import_request_variables() always returns NULL). (Ilia, sjoerd at php dot net) - Fixed bug #49800 (SimpleXML allow (un)serialize() calls without warning). Modified: php/php-src/branches/PHP_5_3/ext/standard/dl.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/standard/dl.c 2009-10-21 06:03:12 UTC (rev 289820) +++ php/php-src/branches/PHP_5_3/ext/standard/dl.c 2009-10-21 06:42:08 UTC (rev 289821) @@ -146,8 +146,18 @@ /* load dynamic symbol */ handle = DL_LOAD(libpath); if (!handle) { +#if PHP_WIN32 + char *err = GET_DL_ERROR(); + if (err) { + php_error_docref(NULL TSRMLS_CC, error_type, "Unable to load dynamic library '%s' - %s", libpath, err); + LocalFree(err); + } else { + php_error_docref(NULL TSRMLS_CC, error_type, "Unable to load dynamic library '%s' - %s", libpath, "Unknown reason"); + } +#else php_error_docref(NULL TSRMLS_CC, error_type, "Unable to load dynamic library '%s' - %s", libpath, GET_DL_ERROR()); GET_DL_ERROR(); /* free the buffer storing the error */ +#endif efree(libpath); return FAILURE; } Modified: php/php-src/trunk/ext/standard/dl.c =================================================================== --- php/php-src/trunk/ext/standard/dl.c 2009-10-21 06:03:12 UTC (rev 289820) +++ php/php-src/trunk/ext/standard/dl.c 2009-10-21 06:42:08 UTC (rev 289821) @@ -139,8 +139,18 @@ /* load dynamic symbol */ handle = DL_LOAD(libpath); if (!handle) { +#if PHP_WIN32 + char *err = GET_DL_ERROR(); + if (err) { + php_error_docref(NULL TSRMLS_CC, error_type, "Unable to load dynamic library '%s' - %s", libpath, err); + LocalFree(err); + } else { + php_error_docref(NULL TSRMLS_CC, error_type, "Unable to load dynamic library '%s' - %s", libpath, "Unknown reason"); + } +#else php_error_docref(NULL TSRMLS_CC, error_type, "Unable to load dynamic library '%s' - %s", libpath, GET_DL_ERROR()); GET_DL_ERROR(); /* free the buffer storing the error */ +#endif efree(libpath); return FAILURE; }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php