aboutsummaryrefslogtreecommitdiff
path: root/xsde/xsde.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'xsde/xsde.cxx')
-rw-r--r--xsde/xsde.cxx22
1 files changed, 20 insertions, 2 deletions
diff --git a/xsde/xsde.cxx b/xsde/xsde.cxx
index acbc5db..97224ca 100644
--- a/xsde/xsde.cxx
+++ b/xsde/xsde.cxx
@@ -704,7 +704,16 @@ main (Int argc, Char* argv[])
// Calculate type sizes.
//
if (gen_hybrid)
- CXX::Hybrid::Generator::calculate_size (*h_ops, *schema, tu);
+ {
+ try
+ {
+ CXX::Hybrid::Generator::calculate_size (*h_ops, *schema, tu);
+ }
+ catch (CXX::Hybrid::Generator::Failed const&)
+ {
+ return 1; // Diagnostic has already been issued.
+ }
+ }
// Try to rearrange definitions so that there is no forward
// inheritance.
@@ -913,7 +922,16 @@ main (Int argc, Char* argv[])
// Calculate type sizes.
//
if (gen_hybrid)
- CXX::Hybrid::Generator::calculate_size (*h_ops, *schema, "");
+ {
+ try
+ {
+ CXX::Hybrid::Generator::calculate_size (*h_ops, *schema, "");
+ }
+ catch (CXX::Hybrid::Generator::Failed const&)
+ {
+ return 1; // Diagnostic has already been issued.
+ }
+ }
// Normalize and annotate complex content restrictions.
//