Bug #17658 Updated: defines do not work properly
| From: | hholzgra@php.net | Date: | Mon, 17 Jun 2002 13:06:00 +0000 |
| Subject: | Bug #17658 Updated: defines do not work properly | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-10859@lists.php.net to get a copy of this message | ||
ID: 17658
Updated by: hholzgra@php.net
Reported By: ilia@prohost.org
Status: Critical
Bug Type: Scripting Engine problem
Operating System: Linux 2.4.18
PHP Version: 4.0CVS-2002-06-08
-Assigned To:
+Assigned To: hholzgra
New Comment:
i'm working on the locale dependencies issues
within the Zend engine, switching to non-locale
dependant implementations of tolower() and strtod()
Previous Comments:
------------------------------------------------------------------------
[2002-06-08 15:42:33] ilia@prohost.org
<?php
define('TEST', 'test#1');
define('test', 'test#2');
echo TEST."\n";
echo test."\n";
?>
Returns
test#1
test
The problem is the fault of zend_constants, which ALWAYS lowercases the
define names when they are being stores/retrieved in/from the hash
table. The same lowercasing code also causes i18n problems, with
defines which do not support the characters in defines made prior to
setlocale() function being called. Ref Bug #16865.
The patch below fixes both problems
--- zend_constants.c_old Sat Jun 8 15:58:01 2002
+++ zend_constants.c Sat Jun 8 15:58:09 2002
@@ -226,8 +226,6 @@
lookup_name = do_alloca(name_len+1);
memcpy(lookup_name, name, name_len+1);
- zend_str_tolower(lookup_name, name_len);
-
if (zend_hash_find(EG(zend_constants), lookup_name, name_len+1,
(void **) &c)==SUCCESS) {
if ((c->flags & CONST_CS) && memcmp(c->name, name,
name_len)!=0) {
retval=0;
@@ -255,7 +253,6 @@
printf("Registering constant for module %d\n",
c->module_number);
#endif
- zend_str_tolower(lowercase_name, c->name_len);
if (zend_hash_add(EG(zend_constants), lowercase_name,
c->name_len, (void *) c, sizeof(zend_constant), NULL)==FAILURE) {
free(c->name);
if (!(c->flags & CONST_PERSISTENT)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=17658&edit=1