diff options
author | John Hodge <tpg@ucc.asn.au> | 2018-09-22 20:43:43 +0800 |
---|---|---|
committer | John Hodge <tpg@ucc.asn.au> | 2018-09-22 20:44:12 +0800 |
commit | fea81c19efc4961ed43a7aac44fed1efd24f2b4d (patch) | |
tree | 307646b9c3d375c45c19812239cbacf07265ead8 | |
parent | 5c63b46f8dca1d65c1906c77169555229ab07412 (diff) | |
download | mrust-fea81c19efc4961ed43a7aac44fed1efd24f2b4d.tar.gz |
Codegen C - Fix incorrect destructor for zst enum variants
-rw-r--r-- | src/trans/codegen_c.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/trans/codegen_c.cpp b/src/trans/codegen_c.cpp index ca038230..ed6c9100 100644 --- a/src/trans/codegen_c.cpp +++ b/src/trans/codegen_c.cpp @@ -1449,8 +1449,12 @@ namespace { { var_lv.as_Downcast().variant_index = var_idx; m_of << "\tcase " << e->values[var_idx] << ":\n"; - emit_destructor_call(var_lv, repr->fields[var_idx].ty, /*unsized_valid=*/false, /*indent=*/2); - m_of << "\tbreak;\n"; + if( this->type_is_bad_zst(repr->fields[var_idx].ty) ) { + } + else { + emit_destructor_call(var_lv, repr->fields[var_idx].ty, /*unsized_valid=*/false, /*indent=*/2); + } + m_of << "\t\tbreak;\n"; } m_of << "\t}\n"; } |