From 773cf883ac75f0f207f8e468461d19f008dba118 Mon Sep 17 00:00:00 2001 From: Kevin Newton Date: Wed, 21 Aug 2024 14:47:10 -0400 Subject: [PATCH] [PRISM] Reset $. when done reading STDIN --- prism_compile.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/prism_compile.c b/prism_compile.c index e72ce4957fa98a..1b453b0ef461dd 100644 --- a/prism_compile.c +++ b/prism_compile.c @@ -10534,6 +10534,9 @@ pm_parse_stdin_fgets(char *string, int size, void *stream) return string; } +// We need access to this function when we're done parsing stdin. +void rb_reset_argf_lineno(long n); + /** * Parse the source off STDIN and store the resulting scope node in the given * parse result struct. It is assumed that the parse result object is zeroed @@ -10552,6 +10555,10 @@ pm_parse_stdin(pm_parse_result_t *result) // free the buffer itself. pm_string_owned_init(&result->input, (uint8_t *) pm_buffer_value(&buffer), pm_buffer_length(&buffer)); + // When we're done parsing, we reset $. because we don't want the fact that + // we went through an IO object to be visible to the user. + rb_reset_argf_lineno(0); + return pm_parse_process(result, node); }