Skip to content

Commit

Permalink
Fixed #2388: String#b improperly updates encoding of source string.
Browse files Browse the repository at this point in the history
  • Loading branch information
nirvdrum committed Dec 24, 2014
1 parent ecee892 commit 4e40732
Showing 1 changed file with 7 additions and 6 deletions.
13 changes: 7 additions & 6 deletions core/src/main/java/org/jruby/RubyString.java
Expand Up @@ -5963,8 +5963,11 @@ public IRubyObject encode(ThreadContext context, IRubyObject toEncoding,

@JRubyMethod
public IRubyObject force_encoding(ThreadContext context, IRubyObject enc) {
return force_encoding(context, context.runtime.getEncodingService().getEncodingFromObject(enc));
}

private IRubyObject force_encoding(ThreadContext context, Encoding encoding) {
modify19();
Encoding encoding = context.runtime.getEncodingService().getEncodingFromObject(enc);
associateEncoding(encoding);
clearCodeRange();
return this;
Expand All @@ -5982,11 +5985,9 @@ public IRubyObject ascii_only_p(ThreadContext context) {

@JRubyMethod
public IRubyObject b(ThreadContext context) {
Encoding encoding = ASCIIEncoding.INSTANCE;
RubyString dup = (RubyString)dup();
dup.associateEncoding(encoding);
dup.clearCodeRange();
return dup;
RubyString dup = strDup(context.runtime);

return dup.force_encoding(context, ASCIIEncoding.INSTANCE);
}

// MRI: str_scrub arity 0
Expand Down

0 comments on commit 4e40732

Please sign in to comment.