Index: src/org/jruby/RubyString.java
===================================================================
RCS file: /cvsroot/jruby/jruby/src/org/jruby/RubyString.java,v
retrieving revision 1.43
diff -u -r1.43 RubyString.java
--- src/org/jruby/RubyString.java	26 Mar 2006 21:21:40 -0000	1.43
+++ src/org/jruby/RubyString.java	8 Apr 2006 09:36:58 -0000
@@ -555,16 +555,17 @@
 
 		if (pat.search(this, 0) >= 0) {
 			RubyMatchData match = (RubyMatchData) getRuntime().getCurrentContext().getBackref();
-			RubyString newStr = match.pre_match();
+			final StringBuffer newStr = new StringBuffer(match.pre_match().getValue());
 			newStr.append(iter ? getRuntime().getCurrentContext().yield(match.group(0)) : pat.regsub(repl, match));
 			newStr.append(match.post_match());
-			newStr.setTaint(isTaint() || repl.isTaint());
+                        final RubyString nStr = getRuntime().newString(newStr.toString());
+			nStr.setTaint(isTaint() || repl.isTaint());
 			if (bang) {
-				replace(newStr);
+				replace(nStr);
 				return this;
 			}
 
-			return newStr;
+			return nStr;
 		}
 		if (bang) {
 			return getRuntime().getNil();
