ext/utf8/string_utf8.c in utf8-0.1.5 vs ext/utf8/string_utf8.c in utf8-0.1.6

- old
+ new

@@ -348,15 +348,16 @@ str = (unsigned char *)RSTRING_PTR(self); len = RSTRING_LEN(self); replace = REPLACEMENT_CHAR; out = xmalloc(len); - for(i=0; i<len; i++) { + for(i=0; i<len; i+=curCharLen) { curCharLen = utf8CharLen(str+i, len); if (curCharLen < 0) { *(out+i) = replace; + curCharLen = 1; } else { - *(out+i) = *(str+i); + memcpy(out+i, str+i, curCharLen); } } rb_out = rb_str_new((const char*)out, len); AS_UTF8(rb_out); \ No newline at end of file