helly           Wed Dec 17 06:20:36 2003 EDT

  Modified files:              
    /php-src/ext/standard       dl.c 
    /php-src/win32      winutil.c 
  Log:
  Fix a memleak: A second call to *nix version of dlerror() frees the error
  string. This behavior is also adapted to the win build so that the buffer
  returned by FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER) can be freed too.
  
  
Index: php-src/ext/standard/dl.c
diff -u php-src/ext/standard/dl.c:1.84 php-src/ext/standard/dl.c:1.85
--- php-src/ext/standard/dl.c:1.84      Sun Aug 17 05:57:21 2003
+++ php-src/ext/standard/dl.c   Wed Dec 17 06:20:35 2003
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: dl.c,v 1.84 2003/08/17 09:57:21 david Exp $ */
+/* $Id: dl.c,v 1.85 2003/12/17 11:20:35 helly Exp $ */
 
 #include "php.h"
 #include "dl.h"
@@ -141,6 +141,7 @@
        handle = DL_LOAD(libpath);
        if (!handle) {
                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 */
                efree(libpath);
                RETURN_FALSE;
        }
Index: php-src/win32/winutil.c
diff -u php-src/win32/winutil.c:1.10 php-src/win32/winutil.c:1.11
--- php-src/win32/winutil.c:1.10        Tue Jun 10 16:03:46 2003
+++ php-src/win32/winutil.c     Wed Dec 17 06:20:35 2003
@@ -20,8 +20,12 @@
 
 PHPAPI char *php_win_err(int error)
 {
-       char *buf;
+       static char *buf = NULL;
 
+       if (buf) {
+               free(buf);
+               buf = NULL;
+       }
        FormatMessage(
                FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |   
FORMAT_MESSAGE_IGNORE_INSERTS,
                NULL, error, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&buf, 
0, NULL

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to