@@ -67,7 +67,6 @@ static ZEND_FUNCTION(get_declared_traits);
67
67
static ZEND_FUNCTION (get_declared_interfaces );
68
68
static ZEND_FUNCTION (get_defined_functions );
69
69
static ZEND_FUNCTION (get_defined_vars );
70
- static ZEND_FUNCTION (create_function );
71
70
static ZEND_FUNCTION (get_resource_type );
72
71
static ZEND_FUNCTION (get_resources );
73
72
static ZEND_FUNCTION (get_loaded_extensions );
@@ -197,11 +196,6 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_get_defined_functions, 0, 0, 0)
197
196
ZEND_ARG_INFO (0 , exclude_disabled )
198
197
ZEND_END_ARG_INFO ()
199
198
200
- ZEND_BEGIN_ARG_INFO_EX (arginfo_create_function , 0 , 0 , 2 )
201
- ZEND_ARG_INFO (0 , args )
202
- ZEND_ARG_INFO (0 , code )
203
- ZEND_END_ARG_INFO ()
204
-
205
199
ZEND_BEGIN_ARG_INFO_EX (arginfo_get_resource_type , 0 , 0 , 1 )
206
200
ZEND_ARG_INFO (0 , res )
207
201
ZEND_END_ARG_INFO ()
@@ -276,7 +270,6 @@ static const zend_function_entry builtin_functions[] = { /* {{{ */
276
270
ZEND_FE (get_declared_interfaces , arginfo_zend__void )
277
271
ZEND_FE (get_defined_functions , arginfo_get_defined_functions )
278
272
ZEND_FE (get_defined_vars , arginfo_zend__void )
279
- ZEND_DEP_FE (create_function , arginfo_create_function )
280
273
ZEND_FE (get_resource_type , arginfo_get_resource_type )
281
274
ZEND_FE (get_resources , arginfo_get_resources )
282
275
ZEND_FE (get_loaded_extensions , arginfo_get_loaded_extensions )
@@ -1895,78 +1888,6 @@ ZEND_FUNCTION(get_defined_vars)
1895
1888
}
1896
1889
/* }}} */
1897
1890
1898
- #define LAMBDA_TEMP_FUNCNAME "__lambda_func"
1899
- /* {{{ proto string create_function(string args, string code)
1900
- Creates an anonymous function, and returns its name (funny, eh?) */
1901
- ZEND_FUNCTION (create_function )
1902
- {
1903
- zend_string * function_name ;
1904
- char * eval_code , * function_args , * function_code ;
1905
- size_t eval_code_length , function_args_len , function_code_len ;
1906
- int retval ;
1907
- char * eval_name ;
1908
-
1909
- if (zend_parse_parameters (ZEND_NUM_ARGS (), "ss" , & function_args , & function_args_len , & function_code , & function_code_len ) == FAILURE ) {
1910
- return ;
1911
- }
1912
-
1913
- eval_code = (char * ) emalloc (sizeof ("function " LAMBDA_TEMP_FUNCNAME )
1914
- + function_args_len
1915
- + 2 /* for the args parentheses */
1916
- + 2 /* for the curly braces */
1917
- + function_code_len );
1918
-
1919
- eval_code_length = sizeof ("function " LAMBDA_TEMP_FUNCNAME "(" ) - 1 ;
1920
- memcpy (eval_code , "function " LAMBDA_TEMP_FUNCNAME "(" , eval_code_length );
1921
-
1922
- memcpy (eval_code + eval_code_length , function_args , function_args_len );
1923
- eval_code_length += function_args_len ;
1924
-
1925
- eval_code [eval_code_length ++ ] = ')' ;
1926
- eval_code [eval_code_length ++ ] = '{' ;
1927
-
1928
- memcpy (eval_code + eval_code_length , function_code , function_code_len );
1929
- eval_code_length += function_code_len ;
1930
-
1931
- eval_code [eval_code_length ++ ] = '}' ;
1932
- eval_code [eval_code_length ] = '\0' ;
1933
-
1934
- eval_name = zend_make_compiled_string_description ("runtime-created function" );
1935
- retval = zend_eval_stringl (eval_code , eval_code_length , NULL , eval_name );
1936
- efree (eval_code );
1937
- efree (eval_name );
1938
-
1939
- if (retval == SUCCESS ) {
1940
- zend_op_array * func ;
1941
- HashTable * static_variables ;
1942
-
1943
- func = zend_hash_str_find_ptr (EG (function_table ), LAMBDA_TEMP_FUNCNAME , sizeof (LAMBDA_TEMP_FUNCNAME )- 1 );
1944
- if (!func ) {
1945
- zend_error_noreturn (E_CORE_ERROR , "Unexpected inconsistency in create_function()" );
1946
- RETURN_FALSE ;
1947
- }
1948
- if (func -> refcount ) {
1949
- (* func -> refcount )++ ;
1950
- }
1951
- static_variables = func -> static_variables ;
1952
- func -> static_variables = NULL ;
1953
- zend_hash_str_del (EG (function_table ), LAMBDA_TEMP_FUNCNAME , sizeof (LAMBDA_TEMP_FUNCNAME )- 1 );
1954
- func -> static_variables = static_variables ;
1955
-
1956
- function_name = zend_string_alloc (sizeof ("0lambda_" )+ MAX_LENGTH_OF_LONG , 0 );
1957
- ZSTR_VAL (function_name )[0 ] = '\0' ;
1958
-
1959
- do {
1960
- ZSTR_LEN (function_name ) = snprintf (ZSTR_VAL (function_name ) + 1 , sizeof ("lambda_" )+ MAX_LENGTH_OF_LONG , "lambda_%d" , ++ EG (lambda_count )) + 1 ;
1961
- } while (zend_hash_add_ptr (EG (function_table ), function_name , func ) == NULL );
1962
- RETURN_NEW_STR (function_name );
1963
- } else {
1964
- zend_hash_str_del (EG (function_table ), LAMBDA_TEMP_FUNCNAME , sizeof (LAMBDA_TEMP_FUNCNAME )- 1 );
1965
- RETURN_FALSE ;
1966
- }
1967
- }
1968
- /* }}} */
1969
-
1970
1891
#if ZEND_DEBUG && defined(ZTS )
1971
1892
ZEND_FUNCTION (zend_thread_id )
1972
1893
{