diff --git a/src/asm/charmap.cpp b/src/asm/charmap.cpp index 50c573f4..aae73a74 100644 --- a/src/asm/charmap.cpp +++ b/src/asm/charmap.cpp @@ -105,6 +105,11 @@ void charmap_Pop() { } void charmap_Add(std::string const &mapping, std::vector &&value) { + if (mapping.empty()) { + error("Cannot map an empty string\n"); + return; + } + Charmap &charmap = *currentCharmap; size_t nodeIdx = 0; diff --git a/test/asm/charmap-empty.asm b/test/asm/charmap-empty.asm new file mode 100644 index 00000000..5a496994 --- /dev/null +++ b/test/asm/charmap-empty.asm @@ -0,0 +1,2 @@ +charmap "", 1 +charmap "nonempty", ; nothing diff --git a/test/asm/charmap-empty.err b/test/asm/charmap-empty.err new file mode 100644 index 00000000..fcef645f --- /dev/null +++ b/test/asm/charmap-empty.err @@ -0,0 +1,5 @@ +error: charmap-empty.asm(1): + Cannot map an empty string +error: charmap-empty.asm(2): + syntax error, unexpected newline +error: Assembly aborted (2 errors)!