From ae7816bc20eefc75be98e5bb3955fe53b932d88f Mon Sep 17 00:00:00 2001 From: Kevin Newton Date: Mon, 5 Feb 2024 11:57:27 -0500 Subject: [PATCH] [PRISM] Fix up idUMinus optimization --- prism_compile.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/prism_compile.c b/prism_compile.c index 0644a76eea..accbd840c1 100644 --- a/prism_compile.c +++ b/prism_compile.c @@ -4160,6 +4160,7 @@ pm_compile_node(rb_iseq_t *iseq, const pm_node_t *node, LINK_ANCHOR *const ret, if ((method_id == idUMinus || method_id == idFreeze) && !PM_NODE_FLAG_P(call_node, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION) && + call_node->receiver != NULL && PM_NODE_TYPE_P(call_node->receiver, PM_STRING_NODE) && call_node->arguments == NULL && call_node->block == NULL && @@ -4192,7 +4193,7 @@ pm_compile_node(rb_iseq_t *iseq, const pm_node_t *node, LINK_ANCHOR *const ret, } else if (method_id == idASET && !PM_NODE_FLAG_P(call_node, PM_CALL_NODE_FLAGS_SAFE_NAVIGATION) && - call_node->arguments && + call_node->arguments != NULL && PM_NODE_TYPE_P((pm_node_t *)call_node->arguments, PM_ARGUMENTS_NODE) && ((pm_arguments_node_t *)call_node->arguments)->arguments.size == 2 && PM_NODE_TYPE_P(((pm_arguments_node_t *)call_node->arguments)->arguments.nodes[0], PM_STRING_NODE) &&