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 <[email protected]>)
+- 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