Bug #10721 Updated: odd output in create_function()
| From: | jeroen@php.net | Date: | Mon, 09 Jul 2001 13:45:11 +0000 |
| Subject: | Bug #10721 Updated: odd output in create_function() | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-59316@lists.php.net to get a copy of this message | ||
ID: 10721
Updated by: jeroen
Reported By: justin@voxel.net
Old Status: Open
Status: Assigned
Bug Type: Scripting Engine problem
Operating System: GNU/Linux
PHP Version: 4.0.6
Old Assigned To:
Assigned To: jeroen
New Comment:
Fixed the patch, only waiting for it to get committed.
Previous Comments:
------------------------------------------------------------------------
[2001-06-27 16:21:20] justin@voxel.net
Any word on this? Still exists in 4.0.6.
------------------------------------------------------------------------
[2001-05-07 23:10:15] justin@voxel.net
An odd character seems to appear in the return value of
create_function() (which should be of 'lambda_x' format
where x is an integer). This character is causing eval() to
crap out when trying to evaluate the created function. Just
before the 'l' is a character that looks like Pi in the
browser. The only way I knew to find out what it was was to
urlencode() the return value and the strange character was
encoded to '%00'. I'm no C coder, but the changes below
seemed to fix things.
*** /tmp/zend_builtin_functions.c Mon May 7 22:09:45 2001
--- /usr/local/src/php-4.0.5/Zend/zend_builtin_functions.c Mon May 7 22:03:31 2001
***************
*** 965,974 ****
}
function_add_ref(func);
! 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);
zend_hash_del(EG(function_table), LAMBDA_TEMP_FUNCNAME,
sizeof(LAMBDA_TEMP_FUNCNAME));
--- 965,974 ----
}
function_add_ref(func);
! function_name = (char *)
emalloc(sizeof("lambda_")+MAX_LENGTH_OF_LONG);
do {
!
sprintf(function_name, "lambda_%d", ++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);
zend_hash_del(EG(function_table), LAMBDA_TEMP_FUNCNAME,
sizeof(LAMBDA_TEMP_FUNCNAME));
------------------------------------------------------------------------
ATTENTION! Do NOT reply to this email!
To reply, use the web interface found at http://bugs.php.net/?id=10721&edit=1