summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/ripper/ripper_init.c.tmpl1
-rw-r--r--internal/parse.h1
-rw-r--r--parse.y6
3 files changed, 4 insertions, 4 deletions
diff --git a/ext/ripper/ripper_init.c.tmpl b/ext/ripper/ripper_init.c.tmpl
index d73ac263a6..11e432423d 100644
--- a/ext/ripper/ripper_init.c.tmpl
+++ b/ext/ripper/ripper_init.c.tmpl
@@ -260,6 +260,7 @@ ripper_parser_dedent_string(struct parser_params *p, VALUE string, int width)
str = rb_str_to_parser_string(p, string);
col = rb_ruby_ripper_dedent_string(p, str, width);
rb_str_replace(string, rb_str_new_parser_string(str));
+ rb_parser_string_free(p, str);
return col;
}
diff --git a/internal/parse.h b/internal/parse.h
index 29accaa7ff..e0c81f4f96 100644
--- a/internal/parse.h
+++ b/internal/parse.h
@@ -70,6 +70,7 @@ rb_encoding *rb_ruby_parser_encoding(rb_parser_t *p);
int rb_ruby_parser_end_seen_p(rb_parser_t *p);
int rb_ruby_parser_set_yydebug(rb_parser_t *p, int flag);
rb_parser_string_t *rb_str_to_parser_string(rb_parser_t *p, VALUE str);
+void rb_parser_string_free(rb_parser_t *p, rb_parser_string_t *str);
int rb_parser_dvar_defined_ref(struct parser_params*, ID, ID**);
ID rb_parser_internal_id(struct parser_params*);
diff --git a/parse.y b/parse.y
index 4fad1cd812..fb0139a8b9 100644
--- a/parse.y
+++ b/parse.y
@@ -764,8 +764,6 @@ string_buffer_append(struct parser_params *p, rb_parser_string_t *str)
buf->last->buf[buf->last->used++] = str;
}
-static void rb_parser_string_free(rb_parser_t *p, rb_parser_string_t *str);
-
static void
string_buffer_free(struct parser_params *p)
{
@@ -2048,15 +2046,15 @@ rb_str_to_parser_string(rb_parser_t *p, VALUE str)
RB_GC_GUARD(str);
return ret;
}
-#endif
-static void
+void
rb_parser_string_free(rb_parser_t *p, rb_parser_string_t *str)
{
if (!str) return;
xfree(PARSER_STRING_PTR(str));
xfree(str);
}
+#endif
static st_index_t
rb_parser_str_hash(rb_parser_string_t *str)