diff options
Diffstat (limited to 're.c')
-rw-r--r-- | re.c | 14 |
1 files changed, 11 insertions, 3 deletions
@@ -703,19 +703,27 @@ VALUE rb_reg_match_pre(match) VALUE match; { + VALUE str; + if (NIL_P(match)) return Qnil; if (RMATCH(match)->BEG(0) == -1) return Qnil; - return rb_str_new(RSTRING(RMATCH(match)->str)->ptr, RMATCH(match)->BEG(0)); + str = rb_str_new(RSTRING(RMATCH(match)->str)->ptr, RMATCH(match)->BEG(0)); + if (OBJ_TAINTED(match)) OBJ_TAINT(str); + return str; } VALUE rb_reg_match_post(match) VALUE match; { + VALUE str; + if (NIL_P(match)) return Qnil; if (RMATCH(match)->BEG(0) == -1) return Qnil; - return rb_str_new(RSTRING(RMATCH(match)->str)->ptr+RMATCH(match)->END(0), - RSTRING(RMATCH(match)->str)->len-RMATCH(match)->END(0)); + str = rb_str_new(RSTRING(RMATCH(match)->str)->ptr+RMATCH(match)->END(0), + RSTRING(RMATCH(match)->str)->len-RMATCH(match)->END(0)); + if (OBJ_TAINTED(match)) OBJ_TAINT(str); + return str; } VALUE |