Kaydet (Commit) 9da6318b authored tarafından Stephan Bergmann's avatar Stephan Bergmann

dconf: fix check for matching template

Change-Id: I8319bf10310d55e2f29de8103d983e34a53f87df
üst f262cfcf
...@@ -816,47 +816,47 @@ void readDir( ...@@ -816,47 +816,47 @@ void readDir(
} }
rtl::Reference<Node> member(members.findNode(layer, name)); rtl::Reference<Node> member(members.findNode(layer, name));
bool insert = !member.is(); bool insert = !member.is();
if (!remove && (replace || insert)) { if (!remove) {
if (!node.is()) { if (replace || insert) {
SAL_WARN("configmgr.dconf", "bad unmatched " << path); if (!node.is()) {
continue;
}
switch (node->kind()) {
case Node::KIND_LOCALIZED_PROPERTY:
member.set(new LocalizedValueNode(layer));
break;
case Node::KIND_GROUP:
if (!static_cast<GroupNode *>(node.get())->isExtensible()) {
SAL_WARN("configmgr.dconf", "bad unmatched " << path); SAL_WARN("configmgr.dconf", "bad unmatched " << path);
continue; continue;
} }
member.set( switch (node->kind()) {
new PropertyNode( case Node::KIND_LOCALIZED_PROPERTY:
layer, TYPE_ANY, true, css::uno::Any(), true)); member.set(new LocalizedValueNode(layer));
break; break;
case Node::KIND_SET: case Node::KIND_GROUP:
assert(!templ.isEmpty()); if (!static_cast<GroupNode *>(node.get())->isExtensible()) {
member = data.getTemplate(layer, templ); SAL_WARN("configmgr.dconf", "bad unmatched " << path);
if (!member.is()) { continue;
SAL_WARN( }
"configmgr.dconf", member.set(
"bad " << path << " denoting undefined template " new PropertyNode(
<< templ); layer, TYPE_ANY, true, css::uno::Any(), true));
continue; break;
case Node::KIND_SET:
assert(!templ.isEmpty());
member = data.getTemplate(layer, templ);
if (!member.is()) {
SAL_WARN(
"configmgr.dconf",
"bad " << path << " denoting undefined template "
<< templ);
continue;
}
break;
default:
assert(false); // cannot happen
} }
break; } else if (!templ.isEmpty() && templ != member->getTemplateName()) {
default: SAL_WARN(
assert(false); // cannot happen "configmgr.dconf",
"bad " << path
<< " denoting set element of non-matching template "
<< member->getTemplateName());
continue;
} }
} else if (!(templ.isEmpty()
|| (node.is() && templ == node->getTemplateName())))
{
SAL_WARN(
"configmgr.dconf",
"bad " << path
<< " denoting set element of non-matching template "
<< node->getTemplateName());
continue;
} }
if (member.is()) { if (member.is()) {
if (member->getFinalized() < layer) { if (member->getFinalized() < layer) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment