Rob Shearman : server: Only call fchmod in file_set_fd if the mode actually changed.

Alexandre Julliard julliard at winehq.org
Tue Oct 9 13:37:29 CDT 2007


Module: wine
Branch: master
Commit: f5070b051147c33ccde44b2dfcb94c6338e0ce0f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=f5070b051147c33ccde44b2dfcb94c6338e0ce0f

Author: Rob Shearman <rob at codeweavers.com>
Date:   Sat Oct  6 14:31:34 2007 +0200

server: Only call fchmod in file_set_fd if the mode actually changed.

---

 server/file.c |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/server/file.c b/server/file.c
index 69d052c..7c384a3 100644
--- a/server/file.c
+++ b/server/file.c
@@ -503,13 +503,16 @@ static int file_set_sd( struct object *obj, const struct security_descriptor *sd
             /* no ACL means full access rights to anyone */
             new_mode |= S_IRWXU | S_IRWXO;
 
-        if (fchmod( unix_fd, new_mode & ~denied_mode ) == -1)
+        if (file->mode != (new_mode & ~denied_mode))
         {
-            file_set_error();
-            return 0;
-        }
+            if (fchmod( unix_fd, new_mode & ~denied_mode ) == -1)
+            {
+                file_set_error();
+                return 0;
+            }
 
-        file->mode = new_mode & ~denied_mode;
+            file->mode = new_mode & ~denied_mode;
+        }
     }
     return 1;
 }




More information about the wine-cvs mailing list