diff options
author | Aaron Patterson <tenderlove@ruby-lang.org> | 2020-10-02 10:54:31 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2020-10-02 12:01:57 -0700 |
commit | 6aa466ba9cf3a0a597716bf7584735ca980622d0 (patch) | |
tree | b01a19c80f40e07dd30ae5019223ccadecf079f9 /ext/strscan | |
parent | 873c8a14f0a12eaf47a064024184a4adfaa04dd9 (diff) |
mark regex internal to string scanner
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/3623
Diffstat (limited to 'ext/strscan')
-rw-r--r-- | ext/strscan/strscan.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/ext/strscan/strscan.c b/ext/strscan/strscan.c index 61c8d8972c..db87818b44 100644 --- a/ext/strscan/strscan.c +++ b/ext/strscan/strscan.c @@ -176,6 +176,7 @@ strscan_mark(void *ptr) { struct strscanner *p = ptr; rb_gc_mark(p->str); + rb_gc_mark(p->regex); } static void @@ -212,6 +213,7 @@ strscan_s_allocate(VALUE klass) CLEAR_MATCH_STATUS(p); onig_region_init(&(p->regs)); p->str = Qnil; + p->regex = Qnil; return obj; } @@ -1168,7 +1170,7 @@ strscan_aref(VALUE self, VALUE idx) idx = rb_sym2str(idx); /* fall through */ case T_STRING: - if (!p->regex) return Qnil; + if (!RTEST(p->regex)) return Qnil; RSTRING_GETMEM(idx, name, i); i = name_to_backref_number(&(p->regs), p->regex, name, name + i, rb_enc_get(idx)); break; |