summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authordearblue <[email protected]>2019-02-27 21:46:07 +0900
committerdearblue <[email protected]>2019-02-27 22:58:09 +0900
commit477e5285e86afb5f33e74747a54201718a249489 (patch)
tree0412c9a0c7b70e6d572f40b75f6022442f45a47d
parent9913643ed8a6d778bc90a932e30e6113e8b3f9e3 (diff)
downloadmruby-477e5285e86afb5f33e74747a54201718a249489.tar.gz
mruby-477e5285e86afb5f33e74747a54201718a249489.zip
Replacement to function for `NODE_STR` cheking
-rw-r--r--mrbgems/mruby-compiler/core/parse.y10
1 files changed, 8 insertions, 2 deletions
diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y
index e80af7d6d..2771ddeed 100644
--- a/mrbgems/mruby-compiler/core/parse.y
+++ b/mrbgems/mruby-compiler/core/parse.y
@@ -852,11 +852,17 @@ new_dstr(parser_state *p, node *a)
return cons((node*)NODE_DSTR, a);
}
+static int
+string_node_p(node *n)
+{
+ return (int)((enum node_type)(intptr_t)n->car == NODE_STR);
+}
+
static node*
concat_string(parser_state *p, node *a, node *b)
{
- if ((enum node_type)(intptr_t)a->car == NODE_STR) {
- if ((enum node_type)(intptr_t)b->car == NODE_STR) {
+ if (string_node_p(a)) {
+ if (string_node_p(b)) {
/* a == NODE_STR && b == NODE_STR */
size_t newlen = (size_t)a->cdr->cdr + (size_t)b->cdr->cdr;
char *str = (char*)mrb_pool_realloc(p->pool, a->cdr->car, (size_t)a->cdr->cdr + 1, newlen + 1);