summaryrefslogtreecommitdiff
path: root/ext/stringio/stringio.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/stringio/stringio.c')
-rw-r--r--ext/stringio/stringio.c10
1 files changed, 1 insertions, 9 deletions
diff --git a/ext/stringio/stringio.c b/ext/stringio/stringio.c
index 4eb1511787..27c7f65408 100644
--- a/ext/stringio/stringio.c
+++ b/ext/stringio/stringio.c
@@ -915,9 +915,6 @@ strio_extend(struct StringIO *ptr, long pos, long len)
if (pos > olen)
MEMZERO(RSTRING_PTR(ptr->string) + olen, char, pos - olen);
}
- else {
- rb_str_modify(ptr->string);
- }
}
/*
@@ -1464,14 +1461,9 @@ strio_write(VALUE self, VALUE str)
}
}
else {
- int cr0 = ENC_CODERANGE(ptr->string);
- int cr = ENC_CODERANGE_UNKNOWN;
- if (rb_enc_asciicompat(enc) && rb_enc_asciicompat(enc2)) {
- cr = ENC_CODERANGE_AND(cr0, ENC_CODERANGE(str));
- }
strio_extend(ptr, ptr->pos, len);
+ rb_str_modify(ptr->string);
memmove(RSTRING_PTR(ptr->string)+ptr->pos, RSTRING_PTR(str), len);
- if (cr != cr0) ENC_CODERANGE_SET(ptr->string, cr);
}
RB_GC_GUARD(str);
ptr->pos += len;