Nikolay Sivov nsivov@codeweavers.com wrote:
@@ -45,6 +46,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(msxml); typedef struct _dom_pi { xmlnode node;
- xmlNodePtr attributes; IXMLDOMProcessingInstruction IXMLDOMProcessingInstruction_iface; LONG ref;
} dom_pi;
Doesn't this create a situation when multiple msxml pi instances could be referencing same prolog node, but with different "attributes" contents? For tree consistency everything should be linked at libxml level.
That might be the case. Also, I've found that ::get_text() for such a node returns data for main PI node instead of the special attributes one.
At the mement I see only two possible solutions: keap using custom node properties code like previous version of the patch does, or replace node->type by XML_ELEMENT_NODE (like node.c,htmldoc_dumpcontent() does) before calling libxml2's xmlSetNsProp/xmlFreeNode/xmlHasProp.
I'm open for suggestions. Still, it seems to me that manual properties management is cleaner than hacking node->type.