ruby-changes:29869
From: nobu <ko1@a...>
Date: Thu, 11 Jul 2013 20:18:23 +0900 (JST)
Subject: [ruby-changes:29869] nobu:r41921 (trunk): transcode.c: fill terminator
nobu 2013-07-11 20:18:10 +0900 (Thu, 11 Jul 2013) New Revision: 41921 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=41921 Log: transcode.c: fill terminator * transcode.c (str_encode_associate): fill terminator after conversion. Modified files: trunk/ChangeLog trunk/internal.h trunk/string.c trunk/transcode.c Index: ChangeLog =================================================================== --- ChangeLog (revision 41920) +++ ChangeLog (revision 41921) @@ -1,4 +1,6 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 -Thu Jul 11 20:18:03 2013 Nobuyoshi Nakada <nobu@r...> +Thu Jul 11 20:18:08 2013 Nobuyoshi Nakada <nobu@r...> + + * transcode.c (str_encode_associate): fill terminator after conversion. * string.c (rb_enc_str_new, rb_str_set_len, rb_str_resize): fill minimum length of the encoding as the terminator. Index: string.c =================================================================== --- string.c (revision 41920) +++ string.c (revision 41921) @@ -1539,6 +1539,16 @@ rb_string_value_cstr(volatile VALUE *ptr https://github.com/ruby/ruby/blob/trunk/string.c#L1539 return s; } +void +rb_str_fill_terminator(VALUE str) +{ + char *s = RSTRING_PTR(str); + long len = RSTRING_LEN(str); + rb_encoding *enc = rb_enc_get(str); + const int minlen = rb_enc_mbminlen(enc); + str_fill_term(str, s, len, minlen, enc); +} + VALUE rb_check_string_type(VALUE str) { Index: internal.h =================================================================== --- internal.h (revision 41920) +++ internal.h (revision 41921) @@ -441,6 +441,7 @@ VALUE rb_str_quote_unprintable(VALUE); https://github.com/ruby/ruby/blob/trunk/internal.h#L441 VALUE rb_id_quote_unprintable(ID); #define QUOTE(str) rb_str_quote_unprintable(str) #define QUOTE_ID(id) rb_id_quote_unprintable(id) +void rb_str_fill_terminator(VALUE str); /* struct.c */ VALUE rb_struct_init_copy(VALUE copy, VALUE s); Index: transcode.c =================================================================== --- transcode.c (revision 41920) +++ transcode.c (revision 41921) @@ -2760,6 +2760,7 @@ str_encode_associate(VALUE str, int enci https://github.com/ruby/ruby/blob/trunk/transcode.c#L2760 int cr = 0; rb_enc_associate_index(str, encidx); + rb_str_fill_terminator(str); /* transcoded string never be broken. */ if (rb_enc_asciicompat(rb_enc_from_index(encidx))) { -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/