summaryrefslogtreecommitdiffstats
path: root/file.c
diff options
context:
space:
mode:
authormichal <michal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-09-02 08:02:56 +0000
committermichal <michal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-09-02 08:02:56 +0000
commitebb48b1bcbc407ba4994e5989b332aa10c045bf5 (patch)
tree8e7fa6a79d123825404e9a4139d9515ffef240cc /file.c
parent69f1862e953e20e7b477478012d50b88c8fdd048 (diff)
downloadruby-ebb48b1bcbc407ba4994e5989b332aa10c045bf5.tar.gz
ruby-ebb48b1bcbc407ba4994e5989b332aa10c045bf5.tar.xz
ruby-ebb48b1bcbc407ba4994e5989b332aa10c045bf5.zip
fix mem leak in rb_file_s_readlink() (ruby-core:394)
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@2777 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'file.c')
-rw-r--r--file.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/file.c b/file.c
index fe13a9ee5..3e53f7098 100644
--- a/file.c
+++ b/file.c
@@ -1301,7 +1301,10 @@ rb_file_s_readlink(klass, path)
size *= 2;
buf = xrealloc(buf, size);
}
- if (rv < 0) rb_sys_fail(RSTRING(path)->ptr);
+ if (rv < 0) {
+ free(buf);
+ rb_sys_fail(RSTRING(path)->ptr);
+ }
v = rb_tainted_str_new(buf, rv);
free(buf);