aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--file.c10
2 files changed, 12 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 438b686df9..64de792d03 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Wed Dec 9 00:52:37 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * file.c (rb_stat_wr, rb_stat_ww): call get_stat only once and
+ reduce checking struct. patch by Yuki Kurihara in
+ [ruby-core:71949]. [Misc #11789]
+
Wed Dec 9 00:24:33 2015 Koichi Sasada <ko1@atdot.net>
* compile.c (iseq_ibf_dump): dump extra data just string length.
diff --git a/file.c b/file.c
index 9259c1c300..824fc800ab 100644
--- a/file.c
+++ b/file.c
@@ -5184,8 +5184,9 @@ static VALUE
rb_stat_wr(VALUE obj)
{
#ifdef S_IROTH
- if ((get_stat(obj)->st_mode & (S_IROTH)) == S_IROTH) {
- return UINT2NUM(get_stat(obj)->st_mode & (S_IRUGO|S_IWUGO|S_IXUGO));
+ struct stat *st = get_stat(obj);
+ if ((st->st_mode & (S_IROTH)) == S_IROTH) {
+ return UINT2NUM(st->st_mode & (S_IRUGO|S_IWUGO|S_IXUGO));
}
else {
return Qnil;
@@ -5276,8 +5277,9 @@ static VALUE
rb_stat_ww(VALUE obj)
{
#ifdef S_IROTH
- if ((get_stat(obj)->st_mode & (S_IWOTH)) == S_IWOTH) {
- return UINT2NUM(get_stat(obj)->st_mode & (S_IRUGO|S_IWUGO|S_IXUGO));
+ struct stat *st = get_stat(obj);
+ if ((st->st_mode & (S_IWOTH)) == S_IWOTH) {
+ return UINT2NUM(st->st_mode & (S_IRUGO|S_IWUGO|S_IXUGO));
}
else {
return Qnil;