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

Reply via email to