Просмотр исходного кода

[LibOS] Remove abused goto in sys/shim_fs.c

Isaku Yamahata 6 лет назад
Родитель
Сommit
4bd9afd9e2
1 измененных файлов с 14 добавлено и 22 удалено
  1. 14 22
      LibOS/shim/src/sys/shim_fs.c

+ 14 - 22
LibOS/shim/src/sys/shim_fs.c

@@ -506,42 +506,34 @@ static ssize_t handle_copy (struct shim_handle * hdli, off_t * offseti,
             bufi = NULL;
             DkVirtualMemoryFree(bufo, ALIGN_UP(bufsize + boffo));
             bufo = NULL;
-            goto done_copy;
-        }
-
-        if (do_mapo) {
+        } else if (do_mapo) {
             copysize = fsi->fs_ops->read(hdli, bufo + boffo, bufsize);
             DkVirtualMemoryFree(bufo, ALIGN_UP(bufsize + boffo));
             bufo = NULL;
             if (copysize < 0)
                 break;
-            goto done_copy;
-        }
-
-        if (do_mapi) {
+        } else if (do_mapi) {
             copysize = fso->fs_ops->write(hdlo, bufi + boffi, bufsize);
             DkVirtualMemoryFree(bufi, ALIGN_UP(bufsize + boffi));
             bufi = NULL;
             if (copysize < 0)
                 break;
-            goto done_copy;
-        }
-
-        if (!bufi)
-            bufi = __alloca((bufsize = (bufsize > BUF_SIZE) ? BUF_SIZE :
-                             bufsize));
+        } else {
+            if (!bufi)
+                bufi = __alloca((bufsize = (bufsize > BUF_SIZE) ? BUF_SIZE :
+                                 bufsize));
 
-        copysize = fsi->fs_ops->read(hdli, bufi, bufsize);
+            copysize = fsi->fs_ops->read(hdli, bufi, bufsize);
 
-        if (copysize <= 0)
-            break;
+            if (copysize <= 0)
+                break;
 
-        expectsize = copysize;
-        copysize = fso->fs_ops->write(hdlo, bufi, expectsize);
-        if (copysize < 0)
-            break;
+            expectsize = copysize;
+            copysize = fso->fs_ops->write(hdlo, bufi, expectsize);
+            if (copysize < 0)
+                break;
+        }
 
-done_copy:
         debug("copy %d bytes\n", copysize);
         bytes += copysize;
         offi += copysize;