diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2020-12-19 17:12:05 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2021-02-25 13:45:49 +0300 |
commit | fea8db080353e408a38ad9b66b50b1c9dfaf96de (patch) | |
tree | 19c060eb9d6b66104f3bff3e5ea940dd7441c74d /xsd/xsd/cxx/tree/counter.cxx | |
parent | 5e527213a2430bb3018e5eebd909aef294edf9b5 (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; } |