summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Hodge <tpg@ucc.asn.au>2018-09-22 20:43:43 +0800
committerJohn Hodge <tpg@ucc.asn.au>2018-09-22 20:44:12 +0800
commitfea81c19efc4961ed43a7aac44fed1efd24f2b4d (patch)
tree307646b9c3d375c45c19812239cbacf07265ead8
parent5c63b46f8dca1d65c1906c77169555229ab07412 (diff)
downloadmrust-fea81c19efc4961ed43a7aac44fed1efd24f2b4d.tar.gz
Codegen C - Fix incorrect destructor for zst enum variants
-rw-r--r--src/trans/codegen_c.cpp8
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";
}