diff options
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; } |