summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-11-12 02:12:19 +0000
committerkosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-11-12 02:12:19 +0000
commitf13d10a0afeec1c6e66b4717fd9f12faeda515ff (patch)
tree0f2e7547e33d71e31645d40905ee3578c50c6295
parenteec252e2e520ed1297df6ca8deb089f29e384e2c (diff)
* io.c (setup_narg): fix off by one bug.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33714 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--io.c9
2 files changed, 8 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 3b3e0bf905..b8ada561c4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Sat Nov 12 10:59:49 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * io.c (setup_narg): fix off by one bug.
+
Sat Nov 12 10:56:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
* io.c (+setup_narg): factor out length calculation logic.
diff --git a/io.c b/io.c
index bb62d3de54..45931adacf 100644
--- a/io.c
+++ b/io.c
@@ -7959,13 +7959,12 @@ setup_narg(int cmd, VALUE *argp, int io_p)
len = 256;
rb_str_modify(arg);
- if (len <= RSTRING_LEN(arg)) {
- len = RSTRING_LEN(arg);
- }
- if (RSTRING_LEN(arg) < len) {
+ /* expand for data + sentinel. */
+ if (RSTRING_LEN(arg) < len+1) {
rb_str_resize(arg, len+1);
}
- RSTRING_PTR(arg)[len] = 17; /* a little sanity check here */
+ /* a little sanity check here */
+ RSTRING_PTR(arg)[RSTRING_LEN(arg) - 1] = 17;
narg = (long)(SIGNED_VALUE)RSTRING_PTR(arg);
}
}