cvs: Zend(PHP_4_3) / zend_constants.c
| From: | Andrei Zmievski | Date: | Wed, 26 May 2004 20:50:51 +0000 |
| Subject: | cvs: Zend(PHP_4_3) / zend_constants.c | ||
| Groups: | php.zend-engine.cvs | ||
| Request: | Send a blank email to php-zend-engine-cvs+get-2664@lists.php.net to get a copy of this message | ||
andrei Wed May 26 16:50:51 2004 EDT
Modified files: (Branch: PHP_4_3)
/Zend zend_constants.c
Log:
Avoid unnecessary copy when registering a constant.
http://cvs.php.net/diff.php/Zend/zend_constants.c?r1=1.42.2.3&r2=1.42.2.4&ty=u
Index: Zend/zend_constants.c
diff -u Zend/zend_constants.c:1.42.2.3 Zend/zend_constants.c:1.42.2.4
--- Zend/zend_constants.c:1.42.2.3 Tue Jun 3 17:53:14 2003
+++ Zend/zend_constants.c Wed May 26 16:50:51 2004
@@ -245,30 +245,34 @@
ZEND_API int zend_register_constant(zend_constant *c TSRMLS_DC)
{
- char *lowercase_name;
+ char *lowercase_name = NULL;
+ char *name;
int ret = SUCCESS;
#if 0
printf("Registering constant for module %d\n", c->module_number);
#endif
- lowercase_name = do_alloca(c->name_len);
-
- memcpy(lowercase_name, c->name, c->name_len);
-
if (!(c->flags & CONST_CS)) {
+ lowercase_name = do_alloca(c->name_len);
+ memcpy(lowercase_name, c->name, c->name_len);
zend_str_tolower(lowercase_name, c->name_len);
- }
+ name = lowercase_name;
+ } else {
+ name = c->name;
+ }
- if (zend_hash_add(EG(zend_constants), lowercase_name, c->name_len, (void *) c,
sizeof(zend_constant), NULL)==FAILURE) {
+ if (zend_hash_add(EG(zend_constants), name, c->name_len, (void *) c, sizeof(zend_constant),
NULL)==FAILURE) {
free(c->name);
if (!(c->flags & CONST_PERSISTENT)) {
zval_dtor(&c->value);
}
- zend_error(E_NOTICE,"Constant %s already defined", lowercase_name);
+ zend_error(E_NOTICE,"Constant %s already defined", name);
ret = FAILURE;
}
- free_alloca(lowercase_name);
+ if (lowercase_name) {
+ free_alloca(lowercase_name);
+ }
return ret;
}