aboutsummaryrefslogtreecommitdiffstats
path: root/frontends/verilog/verilog_parser.y
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2016-08-06 13:16:23 +0200
committerClifford Wolf <clifford@clifford.at>2016-08-06 13:16:23 +0200
commit7f755dec75824e27dd79173a76d5819bf7fdbd27 (patch)
tree596b9c87f06e2b4b1aadb93becf1835872b1b8e7 /frontends/verilog/verilog_parser.y
parent5d6765a9d20ab2a88c02d06cb58fca2bfaf39c8d (diff)
downloadyosys-7f755dec75824e27dd79173a76d5819bf7fdbd27.tar.gz
yosys-7f755dec75824e27dd79173a76d5819bf7fdbd27.tar.bz2
yosys-7f755dec75824e27dd79173a76d5819bf7fdbd27.zip
Fixed bug in parsing real constants
Diffstat (limited to 'frontends/verilog/verilog_parser.y')
-rw-r--r--frontends/verilog/verilog_parser.y8
1 files changed, 4 insertions, 4 deletions
diff --git a/frontends/verilog/verilog_parser.y b/frontends/verilog/verilog_parser.y
index c2327011f..7b025db23 100644
--- a/frontends/verilog/verilog_parser.y
+++ b/frontends/verilog/verilog_parser.y
@@ -1378,10 +1378,10 @@ basic_expr:
} |
TOK_REALVAL {
$$ = new AstNode(AST_REALVALUE);
- char *p = strdup($1->c_str()), *q;
- for (int i = 0, j = 0; !p[j]; j++)
- if (p[j] != '_')
- p[i++] = p[j], p[i] = 0;
+ char *p = (char*)malloc(GetSize(*$1) + 1), *q;
+ for (int i = 0, j = 0; j < GetSize(*$1); j++)
+ if ((*$1)[j] != '_')
+ p[i++] = (*$1)[j], p[i] = 0;
$$->realvalue = strtod(p, &q);
log_assert(*q == 0);
delete $1;