]> granicus.if.org Git - php/commitdiff
Fixed memory leak, when invalid context is specified.
authorIlia Alshanetsky <iliaa@php.net>
Thu, 19 Jun 2003 16:35:17 +0000 (16:35 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Thu, 19 Jun 2003 16:35:17 +0000 (16:35 +0000)
ext/standard/streamsfuncs.c

index cf7635afda04231c671bd1c762df483c8d3fe5ef..a6ceb96e5cef276bcb0d3015e1b609168cba95cd 100644 (file)
@@ -669,10 +669,10 @@ static int parse_context_options(php_stream_context *context, zval *options)
 
 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);
@@ -684,10 +684,14 @@ static int parse_context_params(php_stream_context *context, zval *params)
                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;
 }