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

Reply via email to