fix segfault when parsed node has no namespace (#47)
This bug was introduced in commit 8d06806d
, the check for a correct namespace on
head node of parsed XML fragments does not handle the case where the node has no
namespace. Using lasso_equal_namespace() fix this.
This commit is contained in:
parent
8d06806db6
commit
f673208a62
|
@ -1503,16 +1503,18 @@ lasso_node_impl_init_from_xml(LassoNode *node, xmlNode *xmlnode)
|
|||
}
|
||||
|
||||
name_mismatch = name_mismatch || lasso_strisnotequal((char*)check_class->node_data->node_name, (char*)xmlnode->name);
|
||||
name_mismatch = name_mismatch || lasso_strisnotequal((char*)check_class->node_data->ns->href, (char*)xmlnode->ns->href);
|
||||
name_mismatch = name_mismatch && lasso_strisnotequal(
|
||||
G_OBJECT_CLASS_NAME(class),
|
||||
lasso_registry_default_get_mapping((char*)xmlnode->ns->href,
|
||||
(char*)xmlnode->name,
|
||||
LASSO_LASSO_HREF));
|
||||
name_mismatch = name_mismatch || ! lasso_equal_namespace(check_class->node_data->ns, xmlnode->ns);
|
||||
if (xmlnode->ns) {
|
||||
name_mismatch = name_mismatch && lasso_strisnotequal(
|
||||
G_OBJECT_CLASS_NAME(class),
|
||||
lasso_registry_default_get_mapping((char*)xmlnode->ns->href,
|
||||
(char*)xmlnode->name,
|
||||
LASSO_LASSO_HREF));
|
||||
}
|
||||
if (name_mismatch) {
|
||||
warning("lasso_node_impl_init_from_xml: expected name an href do not match node, expected %s:%s received %s:%s",
|
||||
class->node_data->ns->href, class->node_data->node_name,
|
||||
xmlnode->ns->href, xmlnode->name);
|
||||
class->node_data->ns ? class->node_data->ns->href : NULL, class->node_data->node_name,
|
||||
xmlnode->ns ? xmlnode->ns->href : NULL, xmlnode->name);
|
||||
rc = 1;
|
||||
goto cleanup;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue