aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/yosys.cc
diff options
context:
space:
mode:
authorJon Burgess <jburgess777@gmail.com>2018-10-28 14:49:09 +0000
committerJon Burgess <jburgess777@gmail.com>2018-10-28 14:57:04 +0000
commit6732e566321b828c83b563d24a10ac31c6d03e28 (patch)
tree20b999fa4b614f5c72defc8420e53ac96acb3e62 /kernel/yosys.cc
parentdb676957a0c3032ff44e3195d770948c1c3660af (diff)
downloadyosys-6732e566321b828c83b563d24a10ac31c6d03e28.tar.gz
yosys-6732e566321b828c83b563d24a10ac31c6d03e28.tar.bz2
yosys-6732e566321b828c83b563d24a10ac31c6d03e28.zip
Avoid assert when label is an empty string
Calling back() on an empty string is not allowed and triggers an assert with recent gcc: $ cd manual/PRESENTATION_Intro $ ../../yosys counter.ys ... /usr/include/c++/8/bits/basic_string.h:1136: std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::reference std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::back() [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::reference = char&]: Assertion '!empty()' failed. 802 if (label.back() == ':' && GetSize(label) > 1) (gdb) p label $1 = ""
Diffstat (limited to 'kernel/yosys.cc')
-rw-r--r--kernel/yosys.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/yosys.cc b/kernel/yosys.cc
index 21eeadaaf..f002955ad 100644
--- a/kernel/yosys.cc
+++ b/kernel/yosys.cc
@@ -799,7 +799,7 @@ static void handle_label(std::string &command, bool &from_to_active, const std::
while (pos < GetSize(command) && command[pos] != ' ' && command[pos] != '\t' && command[pos] != '\r' && command[pos] != '\n')
label += command[pos++];
- if (label.back() == ':' && GetSize(label) > 1)
+ if (GetSize(label) > 1 && label.back() == ':')
{
label = label.substr(0, GetSize(label)-1);
command = command.substr(pos);