Actions
Bug #4131
closedcan't set length of shared string error in IO#read
Description
=begin
IO#readにおいて、
lengthがnilでbufferにsharedなStringを指定したときに以下のようにエラーになります。
ruby -ve "a='abcdefghijkl';b=a[1,3];STDIN.read(nil,a)"
ruby 1.9.3dev (2010-12-07 trunk 30119) [i386-mswin32_90]
-e:1:inread': can't set length of shared string (RuntimeError) from -e:1:in
'
patchを貼り付けますが、この後、他のbugfixのためにリファクタリング予定です。
Index: io.c
--- io.c (リビジョン 30119)
+++ io.c (作業コピー)
@@ -2212,7 +2212,10 @@
rb_scan_args(argc, argv, "02", &length, &str);
if (NIL_P(length)) {
-
if (!NIL_P(str)) StringValue(str);
-
if (!NIL_P(str)){
-
StringValue(str);
-
rb_str_modify(str);
-
} GetOpenFile(io, fptr); rb_io_check_char_readable(fptr); return read_all(fptr, remain_size(fptr), str);
=end
Actions
Like0
Like0