rrichards               Thu Sep 18 11:47:59 2008 UTC

  Modified files:              (Branch: PHP_5_3)
    /php-src/ext/xsl    xsltprocessor.c php_xsl.c 
  Log:
  MFH: fix bug #46099 (Xsltprocessor::setProfiling - memory leak)
  
http://cvs.php.net/viewvc.cgi/php-src/ext/xsl/xsltprocessor.c?r1=1.39.2.2.2.9.2.8&r2=1.39.2.2.2.9.2.9&diff_format=u
Index: php-src/ext/xsl/xsltprocessor.c
diff -u php-src/ext/xsl/xsltprocessor.c:1.39.2.2.2.9.2.8 
php-src/ext/xsl/xsltprocessor.c:1.39.2.2.2.9.2.9
--- php-src/ext/xsl/xsltprocessor.c:1.39.2.2.2.9.2.8    Sun May  4 15:14:23 2008
+++ php-src/ext/xsl/xsltprocessor.c     Thu Sep 18 11:47:59 2008
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: xsltprocessor.c,v 1.39.2.2.2.9.2.8 2008/05/04 15:14:23 rrichards Exp $ 
*/
+/* $Id: xsltprocessor.c,v 1.39.2.2.2.9.2.9 2008/09/18 11:47:59 rrichards Exp $ 
*/
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -554,10 +554,6 @@
        php_libxml_decrement_doc_ref(intern->doc TSRMLS_CC);
        efree(intern->doc);
        intern->doc = NULL;
-       
-       if (intern->profiling) {
-               efree(intern->profiling);
-       }
 
        if (params) {
                clone = 0;
@@ -849,13 +845,20 @@
 {
        zval *id;
        xsl_object *intern;
-       char *filename;
+       char *filename = NULL;
        int filename_len;
        DOM_GET_THIS(id);
 
-       if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() 
TSRMLS_CC, "s", &filename, &filename_len) == SUCCESS) {
+       if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() 
TSRMLS_CC, "s!", &filename, &filename_len) == SUCCESS) {
                intern = (xsl_object *)zend_object_store_get_object(id 
TSRMLS_CC);
-               intern->profiling = estrndup(filename,filename_len);
+               if (intern->profiling) {
+                       efree(intern->profiling);
+               }
+               if (filename != NULL) {
+                       intern->profiling = estrndup(filename,filename_len);
+               } else {
+                       intern->profiling = NULL;
+               }
                RETURN_TRUE;
        } else {
                WRONG_PARAM_COUNT;
http://cvs.php.net/viewvc.cgi/php-src/ext/xsl/php_xsl.c?r1=1.32.2.6.2.2.2.4&r2=1.32.2.6.2.2.2.5&diff_format=u
Index: php-src/ext/xsl/php_xsl.c
diff -u php-src/ext/xsl/php_xsl.c:1.32.2.6.2.2.2.4 
php-src/ext/xsl/php_xsl.c:1.32.2.6.2.2.2.5
--- php-src/ext/xsl/php_xsl.c:1.32.2.6.2.2.2.4  Mon Dec 31 07:17:16 2007
+++ php-src/ext/xsl/php_xsl.c   Thu Sep 18 11:47:59 2008
@@ -16,7 +16,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: php_xsl.c,v 1.32.2.6.2.2.2.4 2007/12/31 07:17:16 sebastian Exp $ */
+/* $Id: php_xsl.c,v 1.32.2.6.2.2.2.5 2008/09/18 11:47:59 rrichards Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -103,6 +103,9 @@
                xsltFreeStylesheet((xsltStylesheetPtr) intern->ptr);
                intern->ptr = NULL;
        }
+       if (intern->profiling) {
+               efree(intern->profiling);
+       }
        efree(object);
 }
 /* }}} */



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

Reply via email to