]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemuDomainSaveImageOpen: Automatically close 'fd' if unneeded
authorPeter Krempa <pkrempa@redhat.com>
Wed, 22 Apr 2020 14:19:21 +0000 (16:19 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 23 Apr 2020 13:36:53 +0000 (15:36 +0200)
Use VIR_AUTOCLOSE to declare it and remove all internal closing of the
filedescriptor. This will allow getting rid of 'error' completely.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_driver.c

index 57c66c3401365038aef089b77cf2dfc09280c4a7..c0ce1583b1a4267aa5f39a95a9b5ee46f073d5d4 100644 (file)
@@ -6691,7 +6691,7 @@ qemuDomainSaveImageOpen(virQEMUDriverPtr driver,
                         bool open_write,
                         bool unlink_corrupt)
 {
-    int fd = -1;
+    VIR_AUTOCLOSE fd = -1;
     int ret = -1;
     g_autoptr(virQEMUSaveData) data = NULL;
     virQEMUSaveHeaderPtr header;
@@ -6723,7 +6723,7 @@ qemuDomainSaveImageOpen(virQEMUDriverPtr driver,
     header = &data->header;
     if (saferead(fd, header, sizeof(*header)) != sizeof(*header)) {
         if (unlink_corrupt) {
-            if (VIR_CLOSE(fd) < 0 || unlink(path) < 0) {
+            if (unlink(path) < 0) {
                 virReportSystemError(errno,
                                      _("cannot remove corrupt file: %s"),
                                      path);
@@ -6744,7 +6744,7 @@ qemuDomainSaveImageOpen(virQEMUDriverPtr driver,
                    sizeof(header->magic)) == 0) {
             msg = _("save image is incomplete");
             if (unlink_corrupt) {
-                if (VIR_CLOSE(fd) < 0 || unlink(path) < 0) {
+                if (unlink(path) < 0) {
                     virReportSystemError(errno,
                                          _("cannot remove corrupt file: %s"),
                                          path);
@@ -6812,10 +6812,12 @@ qemuDomainSaveImageOpen(virQEMUDriverPtr driver,
     *ret_def = g_steal_pointer(&def);
     *ret_data = g_steal_pointer(&data);
 
-    return fd;
+    ret = fd;
+    fd = -1;
+
+    return ret;
 
  error:
-    VIR_FORCE_CLOSE(fd);
     return ret;
 }