diff options
author | Clifford Wolf <clifford@clifford.at> | 2014-10-23 10:47:21 +0200 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2014-10-23 10:58:36 +0200 |
commit | c5eb5e56b8911bb520a987761739bbb9d9328380 (patch) | |
tree | 6a578b95c4bc007bb87928df299f90391abfcc07 /frontends | |
parent | 750c615e7f01d44db4a7d504024b3681a56d8a78 (diff) | |
download | yosys-c5eb5e56b8911bb520a987761739bbb9d9328380.tar.gz yosys-c5eb5e56b8911bb520a987761739bbb9d9328380.tar.bz2 yosys-c5eb5e56b8911bb520a987761739bbb9d9328380.zip |
Re-introduced Yosys::readsome() helper function
(f.read() + f.gcount() made problems with lines > 16kB)
Diffstat (limited to 'frontends')
-rw-r--r-- | frontends/ilang/ilang_lexer.l | 6 | ||||
-rw-r--r-- | frontends/verilog/preproc.cc | 8 | ||||
-rw-r--r-- | frontends/verilog/verilog_lexer.l | 6 |
3 files changed, 5 insertions, 15 deletions
diff --git a/frontends/ilang/ilang_lexer.l b/frontends/ilang/ilang_lexer.l index dcbc6b6d7..ace992fbd 100644 --- a/frontends/ilang/ilang_lexer.l +++ b/frontends/ilang/ilang_lexer.l @@ -35,11 +35,7 @@ USING_YOSYS_NAMESPACE #define YY_INPUT(buf,result,max_size) \ - do { \ - ILANG_FRONTEND::lexin->read(buf, max_size-1); \ - result = ILANG_FRONTEND::lexin->gcount(); \ - if (result >= 0) buf[result] = '\0'; \ - } while (0) + result = readsome(*ILANG_FRONTEND::lexin, buf, max_size) %} diff --git a/frontends/verilog/preproc.cc b/frontends/verilog/preproc.cc index da658410d..b4e77c31b 100644 --- a/frontends/verilog/preproc.cc +++ b/frontends/verilog/preproc.cc @@ -196,16 +196,14 @@ static std::string next_token(bool pass_newline = false) static void input_file(std::istream &f, std::string filename) { char buffer[513]; + int rc; insert_input(""); auto it = input_buffer.begin(); input_buffer.insert(it, "`file_push " + filename + "\n"); - while (1) { - f.read(buffer, sizeof(buffer)-1); - if (f.gcount() <= 0) - break; - buffer[f.gcount()] = 0; + while ((rc = readsome(f, buffer, sizeof(buffer)-1)) > 0) { + buffer[rc] = 0; input_buffer.insert(it, buffer); } input_buffer.insert(it, "\n`file_pop\n"); diff --git a/frontends/verilog/verilog_lexer.l b/frontends/verilog/verilog_lexer.l index 0d28e2e7f..ae16ebf78 100644 --- a/frontends/verilog/verilog_lexer.l +++ b/frontends/verilog/verilog_lexer.l @@ -64,11 +64,7 @@ YOSYS_NAMESPACE_END return TOK_ID; #define YY_INPUT(buf,result,max_size) \ - do { \ - lexin->read(buf, max_size-1); \ - result = lexin->gcount(); \ - if (result >= 0) buf[result] = '\0'; \ - } while (0) + result = readsome(*VERILOG_FRONTEND::lexin, buf, max_size) %} |