From 4bf9e75917e6edc3525a73cf3c1df0d9cf9064f6 Mon Sep 17 00:00:00 2001 From: Isaac Hier Date: Thu, 21 Jun 2018 09:47:01 -0400 Subject: [PATCH] Fix segmentation fault on invalid enum field --- src/analyze.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/analyze.cpp b/src/analyze.cpp index 479abef16a07..ebb69cc60647 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -1720,6 +1720,11 @@ static void resolve_enum_type(CodeGen *g, TypeTableEntry *enum_type) { for (uint32_t i = 0; i < field_count; i += 1) { TypeEnumField *enum_field = &enum_type->data.enumeration.fields[i]; + if (enum_field->name == nullptr) { + add_node_error(g, decl_node, buf_sprintf("enum '%s' contains invalid field", buf_ptr(&enum_type->name))); + return; + } + // TODO send patch to LLVM to support APInt in createEnumerator instead of int64_t // http://lists.llvm.org/pipermail/llvm-dev/2017-December/119456.html di_enumerators[i] = ZigLLVMCreateDebugEnumerator(g->dbuilder, buf_ptr(enum_field->name),