pollita         Thu Jun 26 21:46:30 2003 EDT

  Modified files:              (Branch: PHP_4_3)
    /php-src/ext/standard       file.c 
    /php-src/main       streams.c 
  Log:
  MFH: Plug memory leaks when freeing contexts (particularly options)
  
Index: php-src/ext/standard/file.c
diff -u php-src/ext/standard/file.c:1.279.2.28 php-src/ext/standard/file.c:1.279.2.29
--- php-src/ext/standard/file.c:1.279.2.28      Thu Jun 26 21:32:26 2003
+++ php-src/ext/standard/file.c Thu Jun 26 21:46:30 2003
@@ -21,7 +21,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: file.c,v 1.279.2.28 2003/06/27 01:32:26 pollita Exp $ */
+/* $Id: file.c,v 1.279.2.29 2003/06/27 01:46:30 pollita Exp $ */
 
 /* Synced with php 3.0 revision 1.218 1999-06-16 [ssb] */
 
@@ -134,7 +134,12 @@
 
 static ZEND_RSRC_DTOR_FUNC(file_context_dtor)
 {
-       php_stream_context_free((php_stream_context*)rsrc->ptr);
+       php_stream_context *context = (php_stream_context*)rsrc->ptr;
+       if (context->options) {
+               zval_ptr_dtor(&context->options);
+               context->options = NULL;
+       }
+       php_stream_context_free(context);
 }
 
 static void file_globals_ctor(php_file_globals *file_globals_p TSRMLS_DC)
@@ -888,7 +893,6 @@
                        while (SUCCESS == 
zend_hash_get_current_data_ex(Z_ARRVAL_PP(wval), (void**)&oval, &opos)) {
 
                                if (HASH_KEY_IS_STRING == 
zend_hash_get_current_key_ex(Z_ARRVAL_PP(wval), &okey, &okey_len, &num_key, 0, &opos)) 
{
-                                       ZVAL_ADDREF(*oval);
                                        php_stream_context_set_option(context, wkey, 
okey, *oval);
                                }
                                zend_hash_move_forward_ex(Z_ARRVAL_PP(wval), &opos);
Index: php-src/main/streams.c
diff -u php-src/main/streams.c:1.125.2.68 php-src/main/streams.c:1.125.2.69
--- php-src/main/streams.c:1.125.2.68   Fri May 30 21:37:44 2003
+++ php-src/main/streams.c      Thu Jun 26 21:46:30 2003
@@ -20,7 +20,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: streams.c,v 1.125.2.68 2003/05/31 01:37:44 sniper Exp $ */
+/* $Id: streams.c,v 1.125.2.69 2003/06/27 01:46:30 pollita Exp $ */
 
 #define _GNU_SOURCE
 #include "php.h"
@@ -2819,7 +2819,10 @@
 
 PHPAPI void php_stream_context_free(php_stream_context *context)
 {
-       zval_ptr_dtor(&context->options);
+       if (context->options) {
+               zval_ptr_dtor(&context->options);
+               context->options = NULL;
+       }
        efree(context);
 }
 



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

Reply via email to