--- zend_constants.c_old Sat Jun 15 17:46:53 2002 +++ zend_constants.c Sat Jun 15 18:09:59 2002 @@ -222,12 +222,12 @@ zend_constant *c; char *lookup_name; int retval; - - lookup_name = do_alloca(name_len+1); - memcpy(lookup_name, name, name_len+1); - - zend_str_tolower(lookup_name, name_len); - + int c_flag; + + c_flag=1; + lookup_name = name; + + casechk: 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; @@ -236,11 +236,19 @@ *result = c->value; zval_copy_ctor(result); } - } else { + } + else if ( c_flag ) { + lookup_name = do_alloca(name_len+1); + memcpy(lookup_name, name, name_len+1); + zend_str_tolower(lookup_name, name_len); + c_flag=0; + goto casechk; + } + else { retval=0; } - free_alloca(lookup_name); + if( !c_flag ) free_alloca(lookup_name); return retval; } @@ -248,14 +256,20 @@ ZEND_API int zend_register_constant(zend_constant *c TSRMLS_DC) { - char *lowercase_name = zend_strndup(c->name, c->name_len); int ret = SUCCESS; + char *lowercase_name; + + if( !(c->flags & CONST_CS) ) { + lowercase_name = zend_strndup(c->name, c->name_len); + zend_str_tolower(lowercase_name, c->name_len); + } + else + lowercase_name = zend_strndup(c->name, c->name_len); #if 0 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)