[ruby-dev:50272] [Ruby trunk Bug#13960] ARGF.inplace_mode= が SHARABLE_MIDDLE_SUBSTRING=1 を考慮していない
From:
tommy@...
Date:
2017-10-01 14:24:53 UTC
List:
ruby-dev #50272
Issue #13960 has been reported by tommy (Masahiro Tomita).
----------------------------------------
Bug #13960: ARGF.inplace_mode=3D =E3=81=8C SHARABLE_MIDDLE_SUBSTRING=3D1 =
=E3=82=92=E8=80=83=E6=85=AE=E3=81=97=E3=81=A6=E3=81=84=E3=81=AA=E3=81=84
https://bugs.ruby-lang.org/issues/13960
* Author: tommy (Masahiro Tomita)
* Status: Open
* Priority: Normal
* Assignee:=20
* Target version:=20
* ruby -v: ruby 2.5.0dev (2017-10-01 trunk 60085) [x86_64-linux]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
SHARABLE_MIDDLE_SUBSTRING=3D1 =E3=81=A7=E3=82=B3=E3=83=B3=E3=83=91=E3=82=A4=
=E3=83=AB=E3=81=97=E3=81=9FRuby=E3=81=A7=E3=80=81ARGF.inplace_mode=3D =E3=
=81=8CNUL=E7=B5=82=E7=AB=AF=E3=81=BE=E3=81=A7=E6=96=87=E5=AD=97=E5=88=97=E3=
=82=92=E4=BD=BF=E7=94=A8=E3=81=97=E3=81=A6=E3=81=97=E3=81=BE=E3=81=84=E3=81=
=BE=E3=81=99=E3=80=82
```
% echo hoge > hoge
% ruby -e 'ARGF.inplace_mode=3D(".abcdefghijklmnopqrstuvwxyz"*2)[0,27]; ARG=
F.each_line{|line| print line.sub("hoge","fuga")}' hoge
% ls hoge*=20=20=20
hoge hoge.abcdefghijklmnopqrstuvwxyz.abcdefghijklmnopqrstuvwxyz
```
=E6=AC=A1=E3=81=AE=E3=83=91=E3=83=83=E3=83=81=E3=81=A7=E7=9B=B4=E3=82=8B=E3=
=81=A8=E6=80=9D=E3=81=84=E3=81=BE=E3=81=99=E3=80=82
```diff
diff --git a/io.c b/io.c
index 1254e92363..ed4a562d8b 100644
--- a/io.c
+++ b/io.c
@@ -12224,7 +12224,7 @@ argf_inplace_mode_set(VALUE argf, VALUE val)
ARGF.inplace =3D 0;
}
else {
- StringValue(val);
+ StringValueCStr(val);
if (ARGF.inplace) free(ARGF.inplace);
ARGF.inplace =3D 0;
ARGF.inplace =3D strdup(RSTRING_PTR(val));
```
--=20
https://bugs.ruby-lang.org/