Hi, I wont fix this bug: http://bugs.php.net/bug.php?id=47532, but
have some questions. Can you help me?

There is the test case: http://pastebin.org/91030

First, I careful that when we fix this bug, we have broken BC, because
now when we write $attr->value = "foo&bar"; - value has been
escaped and in var_dump($attr->value) we got "foo&bar". For fix this
bug we must remove escaping. This is right?


Second, for remove escaping I think we need use this patch:

Index: attr.c
===================================================================
--- attr.c      (revision 294790)
+++ attr.c      (working copy)
@@ -193,7 +193,7 @@
                convert_to_string(newval);
        }

-       xmlNodeSetContentLen((xmlNodePtr) attrp, Z_STRVAL_P(newval),
Z_STRLEN_P(newval) + 1);
+       xmlNodeAddContentLen((xmlNodePtr) attrp, Z_STRVAL_P(newval),
Z_STRVAL_P(newval) + 1);

        if (newval == &value_copy) {
                zval_dtor(newval);


This patch fix this cases:
$attr = new DOMAttr('test', 'foo&bar');
var_dump($attr->value);
$attr->value = "foo&bar";
var_dump($attr->value);

but in this case we got empty value:
$doc = new DOMDocument;
$attr = $doc->createAttribute("foo");
$attr->value = "foo&bar";
var_dump($attr->value);

Can you explain why?
in first two cases wiil be call xmlNewProp libxml2 function, in last
case - xmlNewDocProp. Both this functions return same variable type.

-- 
--
Best regards

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

Reply via email to