zorba-coders team mailing list archive
-
zorba-coders team
-
Mailing list archive
-
Message #00251
[Bug 859968] Re: Using put on an attribute produces an invalid Xdm instance and a segmentation fault
** Changed in: zorba
Status: Fix Committed => Fix Released
--
You received this bug notification because you are a member of Zorba
Coders, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/859968
Title:
Using put on an attribute produces an invalid Xdm instance and a
segmentation fault
Status in Zorba - The XQuery Processor:
Fix Released
Bug description:
The following query creates an element node with a single children
(not attribute). The attribute is then retrievable using child::node()
but not attribute::*
import module namespace doc = "http://www.zorba-
xquery.com/modules/store/dynamic/documents";
declare function local:dump-types($nodes as node()*) as element()*
{
for $node in $nodes
return
if ($node instance of text()) then ()
else
(
element
{
if ($node instance of element()) then node-name($node)
else if ($node instance of attribute()) then concat("attr-",string(node-name($node)))
else if ($node instance of text()) then 'text'
else if ($node instance of document-node()) then 'document-node'
else if ($node instance of comment()) then 'comment'
else if ($node instance of processing-instruction()) then 'processing-instruction'
else 'unknown'
}
{
for $attr in $node/@*
return <attributes>{local:dump-types($attr)}</attributes>,
for $elem in $node/node()
return <children>{local:dump-types($elem)}</children>
}
)
};
put(attribute {"test"}{"test"},"http://www.zorba-xquery.com/b");
count(doc:document("http://www.zorba-xquery.com/b")/child::node()),
local:dump-types(doc:document("http://www.zorba-xquery.com/b"))
Returns:
<?xml version="1.0" encoding="UTF-8"?>
1<document-node><children><attr-test/></children></document-node>
Segmentation faults then are easy:
import module namespace doc = "http://www.zorba-
xquery.com/modules/store/dynamic/documents";
declare function local:dump-types($nodes as node()*) as element()*
{
for $node in $nodes
return
if ($node instance of text()) then ()
else
(
element
{
if ($node instance of element()) then node-name($node)
else if ($node instance of attribute()) then concat("attr-",string(node-name($node)))
else if ($node instance of text()) then 'text'
else if ($node instance of document-node()) then 'document-node'
else if ($node instance of comment()) then 'comment'
else if ($node instance of processing-instruction()) then 'processing-instruction'
else 'unknown'
}
{
for $attr in $node/@*
return <attributes>{local:dump-types($attr)}</attributes>,
for $elem in $node/node()
return <children>{local:dump-types($elem)}</children>
}
)
};
put(attribute {"test"}{"test"},"http://www.zorba-xquery.com/b");
replace node doc:document("http://www.zorba-xquery.com/b")/child::node() with attribute{"aaa"}{"xxx"};
To manage notifications about this bug go to:
https://bugs.launchpad.net/zorba/+bug/859968/+subscriptions
References