iliaa           Thu Jun 19 12:35:29 2003 EDT

  Modified files:              (Branch: PHP_4_3)
    /php4/ext/standard  file.c 
  Log:
  MFH: Fixed memory leak, when invalid context is specified.
  
  
Index: php4/ext/standard/file.c
diff -u php4/ext/standard/file.c:1.279.2.26 php4/ext/standard/file.c:1.279.2.27
--- php4/ext/standard/file.c:1.279.2.26 Thu Jun 19 12:10:37 2003
+++ php4/ext/standard/file.c    Thu Jun 19 12:35:29 2003
@@ -21,7 +21,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: file.c,v 1.279.2.26 2003/06/19 16:10:37 iliaa Exp $ */
+/* $Id: file.c,v 1.279.2.27 2003/06/19 16:35:29 iliaa Exp $ */
 
 /* Synced with php 3.0 revision 1.218 1999-06-16 [ssb] */
 
@@ -905,10 +905,10 @@
 
 static int parse_context_params(php_stream_context *context, zval *params)
 {
-       int ret = SUCCESS;
+       int ret = FAILURE;
        zval **tmp;
 
-       if (SUCCESS == zend_hash_find(Z_ARRVAL_P(params), "notification", 
sizeof("notification"), (void**)&tmp)) {
+       if ((ret = zend_hash_find(Z_ARRVAL_P(params), "notification", 
sizeof("notification"), (void**)&tmp)) == SUCCESS) {
                
                if (context->notifier) {
                        php_stream_notification_free(context->notifier);
@@ -920,10 +920,14 @@
                context->notifier->ptr = *tmp;
                ZVAL_ADDREF(*tmp);
        }
-       if (SUCCESS == zend_hash_find(Z_ARRVAL_P(params), "options", 
sizeof("options"), (void**)&tmp)) {
+       if ((ret = zend_hash_find(Z_ARRVAL_P(params), "options", sizeof("options"), 
(void**)&tmp)) == SUCCESS) {
                parse_context_options(context, *tmp);
        }
-       
+
+       if (ret != SUCCESS) {
+               php_stream_context_free(context);
+       }
+
        return ret;
 }
 



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

Reply via email to