aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-03-24 01:25:02 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-03-24 01:25:02 +0000
commit152934a300d8becb43d7d260b8491d162cbd83ba (patch)
tree51b8eba43b07188e24300537f09784c6518103e5
parent064c36a04113170df97af12ed54c5e1e636a849e (diff)
downloadruby-152934a300d8becb43d7d260b8491d162cbd83ba.tar.gz
* file.c (file_expand_path): set length of string before calling
rb_enc_check because rb_enc_check scans its content. This prevents warnings by valgrind. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27028 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog6
-rw-r--r--file.c7
2 files changed, 11 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index f7aed29a14..f6812d0ada 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Wed Mar 24 10:18:12 2010 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * file.c (file_expand_path): set length of string before calling
+ rb_enc_check because rb_enc_check scans its content.
+ This prevents warnings by valgrind.
+
Tue Mar 23 23:58:51 2010 James Edward Gray II <jeg2@ruby-lang.org>
* lib/csv.rb: Incorporating the fixes from the recent
diff --git a/file.c b/file.c
index 7d6d25e21a..5a0b16eabe 100644
--- a/file.c
+++ b/file.c
@@ -2849,11 +2849,14 @@ file_expand_path(VALUE fname, VALUE dname, int abs_mode, VALUE result)
p = chompdirsep(skiproot(buf));
}
else {
+ size_t len;
b = s;
do s++; while (isdirsep(*s));
- p = buf + (s - b);
+ len = s - b;
+ p = buf + len;
BUFCHECK(bdiff >= buflen);
- memset(buf, '/', p - buf);
+ memset(buf, '/', len);
+ rb_str_set_len(result, len);
rb_enc_associate(result, rb_enc_check(result, fname));
}
if (p > buf && p[-1] == '/')