summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libxsd/xsd/cxx/tree/elements.hxx12
1 files changed, 11 insertions, 1 deletions
diff --git a/libxsd/xsd/cxx/tree/elements.hxx b/libxsd/xsd/cxx/tree/elements.hxx
index 805b32a..09e86b6 100644
--- a/libxsd/xsd/cxx/tree/elements.hxx
+++ b/libxsd/xsd/cxx/tree/elements.hxx
@@ -377,7 +377,17 @@ namespace xsd
type&
operator= (const type& x)
{
- while (&x == 0) /* unused */;
+ if (this != &x)
+ {
+ // Drop DOM association.
+ //
+ if (dom_info_.get ())
+ {
+ std::auto_ptr<dom_info> r (0);
+ dom_info_ = r;
+ }
+ }
+
return *this;
}