[ostree] libotutil: Fix two bugs in usage of posix_fallocate()



commit 5346e0615be2af2ee5a6c8055dd731c90e5b45e9
Author: Colin Walters <walters verbum org>
Date:   Tue Apr 29 07:40:25 2014 -0400

    libotutil: Fix two bugs in usage of posix_fallocate()
    
    * It's invalid to call it with a size of 0, so don't do that.
    
    * posix_* apparently don't set errno.  So capture the return value and
      use that.

 src/libotutil/ot-gio-utils.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)
---
diff --git a/src/libotutil/ot-gio-utils.c b/src/libotutil/ot-gio-utils.c
index 5b3dcfc..61eb422 100644
--- a/src/libotutil/ot-gio-utils.c
+++ b/src/libotutil/ot-gio-utils.c
@@ -308,10 +308,14 @@ ot_gfile_replace_contents_fsync (GFile          *path,
 
   instream = g_memory_input_stream_new_from_bytes (contents);
 
-  if (posix_fallocate (fd, 0, g_bytes_get_size (contents)) != 0)
+  if (g_bytes_get_size (contents) > 0)
     {
-      ot_util_set_error_from_errno (error, errno);
-      goto out;
+      int r = posix_fallocate (fd, 0, g_bytes_get_size (contents));
+      if (r != 0)
+        {
+          ot_util_set_error_from_errno (error, r);
+          goto out;
+        }
     }
 
   if (g_output_stream_splice (stream, instream, 0,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]