Andi Gutmans <[EMAIL PROTECTED]> wrote:

> It indeed does look very hackish. Is this bug the same bug as the last 
> patch of yours addressed?

Not the same, but those are similar in the point that both are basically 
because of the current engine's limitation in handling temporary variables. 
(If my understanding is correct, they are a kind of local variables which 
are allocated during compile time. Am I right? :)

In this case, the problem is that no result znode is produced after 
assigning a string element to another element within a string. So first I 
was trying to simply set the result node with op2, the znode to be 
assigned to, but that led a bunch of memleaks if op2 is IS_VAR and derived 
from a zval that represents a referenced string element because that kind 
of temporary variables will never be freed unless it has oppotunity to be 
assigned to a real variable znode. Then the patch ended up with my 
decision to statically allocate a space for such a string in each znode 
structure.

> I'll try and take a look at the bug report this week. I'm not quite sure 
> this can/should be fixed. AFAIK the return value of $str[1] = '*' is the 
> updated string itself and not the assigned '*'.

I'm wondering if it can be fixed in a cleaner way either, but I think the 
bug should be fixed in any way, as long as we have to implement 
string element access by offset for backwards compatibilities.

And actually my patch addresses another bug in ZE2 code related to this 
issue. String offsets should be represented by signed integers so as to 
handle a erroneous case that the offset is less than 0. ZE1 has no 
problems about this.

Moriyoshi


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to