diff --git a/src/org/jruby/RubyRegexp.java b/src/org/jruby/RubyRegexp.java index e9e04691434..16ac07a2540 100644 --- a/src/org/jruby/RubyRegexp.java +++ b/src/org/jruby/RubyRegexp.java @@ -396,7 +396,7 @@ private Encoding checkEncoding(RubyString str, boolean warn) { return enc; } - final Regex preparePattern(RubyString str) { + public final Regex preparePattern(RubyString str) { check(); Encoding enc = checkEncoding(str, true); if (enc == pattern.getEncoding()) return pattern; diff --git a/src/org/jruby/ext/strscan/RubyStringScanner.java b/src/org/jruby/ext/strscan/RubyStringScanner.java index 822a59b6265..4eee7ad6b00 100644 --- a/src/org/jruby/ext/strscan/RubyStringScanner.java +++ b/src/org/jruby/ext/strscan/RubyStringScanner.java @@ -227,10 +227,11 @@ private IRubyObject extractBegLen(Ruby runtime, int beg, int len) { } private IRubyObject scan(IRubyObject regex, boolean succptr, boolean getstr, boolean headonly) { - if (!(regex instanceof RubyRegexp)) throw getRuntime().newTypeError("wrong argument type " + regex.getMetaClass() + " (expected Regexp)"); + Ruby runtime = getRuntime(); + if (!(regex instanceof RubyRegexp)) throw runtime.newTypeError("wrong argument type " + regex.getMetaClass() + " (expected Regexp)"); check(); - Regex pattern = ((RubyRegexp)regex).getPattern(); + Regex pattern = ((RubyRegexp)regex).preparePattern(str); clearMatched(); int rest = str.getByteList().getRealSize() - pos;