I don't follow you. Why does it need to be copied? c->name already contains the value. Old? New? c is c is c. Commenting out the code causes other problems elsewhere (or seems to). I just don't understand why it has to be done.
> -----Original Message----- > --- Joseph Tate <[EMAIL PROTECTED]> wrote: > > in the copy_zend_constant function it reads: > > > > void copy_zend_constant(zend_constant *c) > > { > > c->name = zend_strndup(c->name, c->name_len); > > if (!(c->flags & CONST_PERSISTENT)) { > > zval_copy_ctor(&c->value); > > if (c->flags & CONST_EFREE_PERSISTENT) { /* > persist_alloc()'d data */ > > persist_alloc(&c->value); > > } > > } > > } > > > > I draw your attention to the first line in the function: > > c->name = zend_strndup(c->name, c->name_len); > > > > First of all, why is this string duplicated only to store it to the same > > location? Secondly, is c->name freed somewhere else? Cause I > can't see it > > being freed. Seems like this line can be removed... > > > > So c points to the "old" value and you need to copy the name and > the value to > the "new" one, name and value. and the way hashes and emalloc > works the memory > will be freed automatically. > > -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php