summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/extensible.h4
-rw-r--r--src/extensible.cpp3
2 files changed, 4 insertions, 3 deletions
diff --git a/include/extensible.h b/include/extensible.h
index f33312393..2a852ff47 100644
--- a/include/extensible.h
+++ b/include/extensible.h
@@ -176,6 +176,8 @@ class SerializableExtensibleItem : public PrimitiveExtensibleItem<T>
T t;
if (data[this->name] >> t)
this->Set(e, t);
+ else
+ this->Unset(e);
}
};
@@ -196,6 +198,8 @@ class SerializableExtensibleItem<bool> : public PrimitiveExtensibleItem<bool>
data[this->name] >> b;
if (b)
this->Set(e);
+ else
+ this->Unset(e);
}
};
diff --git a/src/extensible.cpp b/src/extensible.cpp
index 552ad5d2b..37206f7c1 100644
--- a/src/extensible.cpp
+++ b/src/extensible.cpp
@@ -49,9 +49,6 @@ void Extensible::ExtensibleSerialize(const Extensible *e, const Serializable *s,
void Extensible::ExtensibleUnserialize(Extensible *e, Serializable *s, Serialize::Data &data)
{
- while (!e->extension_items.empty())
- (*e->extension_items.begin())->Unset(e);
-
for (std::set<ExtensibleBase *>::iterator it = extensible_items.begin(); it != extensible_items.end(); ++it)
{
ExtensibleBase *eb = *it;