summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--string.c4
2 files changed, 7 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 67c3213b9..bdffe38ae 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Tue Jan 8 15:03:10 2008 Tanaka Akira <akr@fsij.org>
+
+ * string.c (str_gsub): avoid appending empty pre-match substr.
+
Tue Jan 8 13:05:57 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* compile.c (iseq_build_from_ary), iseq.c (iseq_load): fix for format change.
diff --git a/string.c b/string.c
index 189cc1b75..d72d0352c 100644
--- a/string.c
+++ b/string.c
@@ -2720,7 +2720,9 @@ str_gsub(int argc, VALUE *argv, VALUE str, int bang)
if (OBJ_TAINTED(val)) tainted = 1;
len = beg - offset; /* copy pre-match substr */
- rb_enc_str_buf_cat(dest, cp, len, str_enc);
+ if (len) {
+ rb_enc_str_buf_cat(dest, cp, len, str_enc);
+ }
rb_str_buf_append(dest, val);