From 4dcc1ef66c40b60cb652f4f7b0553ea7a9f73fa8 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Mon, 16 Jun 2003 09:59:02 +0000 Subject: [PATCH] fix lambda function static vars (related to #17115) --- Zend/zend_builtin_functions.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 7807d6bd6e..0447917e7e 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -1174,20 +1174,21 @@ ZEND_FUNCTION(create_function) efree(eval_name); if (retval==SUCCESS) { - zend_function *func; + zend_function new_function, *func; if (zend_hash_find(EG(function_table), LAMBDA_TEMP_FUNCNAME, sizeof(LAMBDA_TEMP_FUNCNAME), (void **) &func)==FAILURE) { zend_error(E_ERROR, "Unexpected inconsistency in create_function()"); RETURN_FALSE; } - function_add_ref(func); + new_function = *func; + function_add_ref(&new_function); function_name = (char *) emalloc(sizeof("0lambda_")+MAX_LENGTH_OF_LONG); do { sprintf(function_name, "%clambda_%d", 0, ++EG(lambda_count)); function_name_length = strlen(function_name+1)+1; - } while (zend_hash_add(EG(function_table), function_name, function_name_length+1, func, sizeof(zend_function), NULL)==FAILURE); + } while (zend_hash_add(EG(function_table), function_name, function_name_length+1, &new_function, sizeof(zend_function), NULL)==FAILURE); zend_hash_del(EG(function_table), LAMBDA_TEMP_FUNCNAME, sizeof(LAMBDA_TEMP_FUNCNAME)); RETURN_STRINGL(function_name, function_name_length, 0); } else { -- 2.40.0