Index: zend_builtin_functions.c =================================================================== RCS file: /repository/Zend/zend_builtin_functions.c,v retrieving revision 1.76 diff -u -r1.76 zend_builtin_functions.c --- zend_builtin_functions.c 2000/10/17 18:25:10 1.76 +++ zend_builtin_functions.c 2000/11/21 15:16:22 @@ -905,48 +905,16 @@ } /* }}} */ -static int copy_variable_name(zval *varname, int num_args, va_list args, zend_hash_key *hash_key) -{ - zval *ar = va_arg(args, zval *); - - if (hash_key->nKeyLength != 0 && hash_key->arKey[0] != 0) { - add_next_index_stringl(ar, hash_key->arKey, hash_key->nKeyLength-1, 1); - } - - return 0; -} - /* {{{ proto array get_defined_vars(void) - Returns a two-dimensional associative array of all defined variable names */ + Returns an associative array of names and values of all currently defined variable names (variables in the current scope) */ ZEND_FUNCTION(get_defined_vars) { - zval *globals; - zval *current; - - if (ZEND_NUM_ARGS() != 0) { - ZEND_WRONG_PARAM_COUNT(); - } + zval *tmp; - MAKE_STD_ZVAL(globals); - array_init(globals); - - MAKE_STD_ZVAL(current); - array_init(current); - array_init(return_value); - - zend_hash_apply_with_arguments(&EG(symbol_table), (apply_func_args_t)copy_variable_name, 1, globals); - zend_hash_apply_with_arguments(EG(active_symbol_table), (apply_func_args_t)copy_variable_name, 1, current); - - if (zend_hash_add(return_value->value.ht, "globals", sizeof("globals"), (void **)&globals, sizeof(zval *), NULL) == FAILURE) { - zend_error(E_WARNING, "Cannot add gobal variables to return value from get_defined_vars()"); - RETURN_FALSE; - } - if (zend_hash_add(return_value->value.ht, "current", sizeof("current"), (void **)¤t, sizeof(zval *), NULL) == FAILURE) { - zend_error(E_WARNING, "Cannot add current variables to return value from get_defined_vars()"); - RETURN_FALSE; - } + zend_hash_copy(return_value->value.ht, EG(active_symbol_table), + (copy_ctor_func_t)zval_add_ref, &tmp, sizeof(zval *)); } /* }}} */