diff options
Diffstat (limited to 'string.c')
-rw-r--r-- | string.c | 9 |
1 files changed, 4 insertions, 5 deletions
@@ -5705,8 +5705,7 @@ rb_str_setbyte(VALUE str, VALUE index, VALUE value) { long pos = NUM2LONG(index); long len = RSTRING_LEN(str); - char *head, *left = 0; - unsigned char *ptr; + char *ptr, *head, *left = 0; rb_encoding *enc; int cr = ENC_CODERANGE_UNKNOWN, width, nlen; @@ -5717,18 +5716,18 @@ rb_str_setbyte(VALUE str, VALUE index, VALUE value) VALUE v = rb_to_int(value); VALUE w = rb_int_and(v, INT2FIX(0xff)); - unsigned char byte = NUM2INT(w) & 0xFF; + char byte = (char)(NUM2INT(w) & 0xFF); if (!str_independent(str)) str_make_independent(str); enc = STR_ENC_GET(str); head = RSTRING_PTR(str); - ptr = (unsigned char *)&head[pos]; + ptr = &head[pos]; if (!STR_EMBED_P(str)) { cr = ENC_CODERANGE(str); switch (cr) { case ENC_CODERANGE_7BIT: - left = (char *)ptr; + left = ptr; *ptr = byte; if (ISASCII(byte)) goto end; nlen = rb_enc_precise_mbclen(left, head+len, enc); |