summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-06-07 18:13:31 +0300
committerAndrei Karas <akaras@inbox.ru>2015-06-07 18:13:31 +0300
commit736c29dbf42250e8e4d1aab7953ddb57742ba67d (patch)
tree93065dbea1eddfadd502acd5c74163301f2a32a3
parent9e2788dc573872d3096913f041a068ba3428b882 (diff)
downloadparanucker-736c29dbf42250e8e4d1aab7953ddb57742ba67d.tar.gz
paranucker-736c29dbf42250e8e4d1aab7953ddb57742ba67d.tar.bz2
paranucker-736c29dbf42250e8e4d1aab7953ddb57742ba67d.tar.xz
paranucker-736c29dbf42250e8e4d1aab7953ddb57742ba67d.zip
Fix crash in parsing INTEGER_CST.
-rw-r--r--src/nodes/base/node.h4
-rw-r--r--src/parsers/cst/integer_cst.cpp5
2 files changed, 8 insertions, 1 deletions
diff --git a/src/nodes/base/node.h b/src/nodes/base/node.h
index 0863c1b..34688ef 100644
--- a/src/nodes/base/node.h
+++ b/src/nodes/base/node.h
@@ -37,7 +37,8 @@ struct Node
line(-1),
column(-1),
treeNumber(0),
- indent(0)
+ indent(0),
+ noLabel(false)
{
}
@@ -60,6 +61,7 @@ struct Node
int column;
int treeNumber;
int indent;
+ bool noLabel;
};
#endif // NODES_BASE_NODE_H
diff --git a/src/parsers/cst/integer_cst.cpp b/src/parsers/cst/integer_cst.cpp
index b5b3686..ebdfe7a 100644
--- a/src/parsers/cst/integer_cst.cpp
+++ b/src/parsers/cst/integer_cst.cpp
@@ -34,6 +34,11 @@ namespace Generic
void parseIntegerCstNode(IntegerCstNode *node)
{
fillType(node);
+ if (!tree_fits_shwi_p(node->gccNode))
+ {
+ node->noLabel = true;
+ return;
+ }
if (tree_int_cst_sgn(node->gccNode) < 0)
{
node->label = "-";