diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2020-12-19 17:12:05 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2021-02-24 22:20:33 +0300 |
commit | fe18c518cf476ea5a2c3eede8bf6b994ec3105f2 (patch) | |
tree | 16f5ebb14ce1bd541412bf375ba5a44b5341c6b1 /xsd/xsd/cxx/tree/counter.cxx | |
parent | a8ce5c380c69539fe0c7c62c397634d9d0c9fde2 (diff) |
Various fixes
Diffstat (limited to 'xsd/xsd/cxx/tree/counter.cxx')
-rw-r--r-- | xsd/xsd/cxx/tree/counter.cxx | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/xsd/xsd/cxx/tree/counter.cxx b/xsd/xsd/cxx/tree/counter.cxx index 94bcc87..3fee0b1 100644 --- a/xsd/xsd/cxx/tree/counter.cxx +++ b/xsd/xsd/cxx/tree/counter.cxx @@ -241,18 +241,23 @@ namespace CXX schema >> sources >> schema; - Traversal::Names schema_names; - Traversal::Namespace ns; - Traversal::Names ns_names; - GlobalType global_type (ctx, counts); - GlobalElement global_element (ctx, counts); + // The GlobalElement object destructor updates the counts, so make sure + // that this object is destroyed before we return the counts. + // + { + Traversal::Names schema_names; + Traversal::Namespace ns; + Traversal::Names ns_names; + GlobalType global_type (ctx, counts); + GlobalElement global_element (ctx, counts); - schema >> schema_names >> ns >> ns_names; + schema >> schema_names >> ns >> ns_names; - ns_names >> global_element; - ns_names >> global_type; + ns_names >> global_element; + ns_names >> global_type; - schema.dispatch (tu); + schema.dispatch (tu); + } return counts; } |