Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 105e9878 authored by Nicolas Geoffray's avatar Nicolas Geoffray
Browse files

Always unlink the out_vdex_file.

Even if we pass the same vdex file as input and output to
dex2oat, make sure we unlink it if dex2oat failed.

bug:38113240
Test: manual, killing dex2oat invocation

(cherry picked from commit 7bb16577)

Change-Id: I157b3d33179b5bff1ca38750bee24aab01c5a19b
parent 584bc3ce
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -1198,7 +1198,11 @@ bool open_vdex_files(const char* apk_path, const char* out_oat_path, int dexopt_
    if (dexopt_action == DEX2OAT_FOR_BOOT_IMAGE &&
            in_vdex_wrapper_fd->get() != -1 &&
            in_vdex_path_str == out_vdex_path_str) {
        out_vdex_wrapper_fd->reset(in_vdex_wrapper_fd->get());
        // We unlink the file in case the invocation of dex2oat fails, to ensure we don't
        // have bogus stale vdex files.
        out_vdex_wrapper_fd->reset(
              in_vdex_wrapper_fd->get(),
              [out_vdex_path_str]() { unlink(out_vdex_path_str.c_str()); });
        // Disable auto close for the in wrapper fd (it will be done when destructing the out
        // wrapper).
        in_vdex_wrapper_fd->DisableAutoClose();