From 042b67f02472754a6a9d50a2cb5fe71a85ffb3b4 Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Wed, 19 Oct 2016 12:44:58 +0200 Subject: [PATCH] No limit for length of lines in BLIF front-end --- frontends/blif/blifparse.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/frontends/blif/blifparse.cc b/frontends/blif/blifparse.cc index f154f7c04..6d4d60870 100644 --- a/frontends/blif/blifparse.cc +++ b/frontends/blif/blifparse.cc @@ -23,6 +23,7 @@ YOSYS_NAMESPACE_BEGIN static bool read_next_line(char *&buffer, size_t &buffer_size, int &line_count, std::istream &f) { + string strbuf; int buffer_len = 0; buffer[0] = 0; @@ -42,8 +43,13 @@ static bool read_next_line(char *&buffer, size_t &buffer_size, int &line_count, if (buffer_len > 0 && buffer[buffer_len-1] == '\\') buffer[--buffer_len] = 0; line_count++; - if (!f.getline(buffer+buffer_len, buffer_size-buffer_len)) + if (!std::getline(f, strbuf)) return false; + while (buffer_size-buffer_len < strbuf.size()+1) { + buffer_size *= 2; + buffer = (char*)realloc(buffer, buffer_size); + } + strcpy(buffer+buffer_len, strbuf.c_str()); } else return true; } -- 2.30.2