diff options
author | 2022-03-29 20:41:38 +0000 | |
---|---|---|
committer | 2022-03-29 20:41:38 +0000 | |
commit | db0b76fa5ce31c3e69faaa71c87a083a2361bced (patch) | |
tree | 7721ca6acfb28b601e9e57c7bdb83757d4a2ce8f | |
parent | 47266662963a0ea144367eb2183faa46a26e817d (diff) | |
parent | d536f3007e8e585d7f6f03fa9b21ab4461e6b82b (diff) |
Merge "Retry the dir deletion if can't rename." am: d2ed995e83 am: d536f3007e
Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/2047963
Change-Id: I5ba3c653979be3b2b2ef411705f53fdc21d76d60
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | cmds/installd/utils.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/cmds/installd/utils.cpp b/cmds/installd/utils.cpp index 2ed971da0e..c7bea3f4a9 100644 --- a/cmds/installd/utils.cpp +++ b/cmds/installd/utils.cpp @@ -705,16 +705,16 @@ static int rename_delete_dir_contents(const std::string& pathname, auto temp_dir_path = base::StringPrintf("%s/%s", Dirname(pathname).c_str(), temp_dir_name.c_str()); - if (::rename(pathname.c_str(), temp_dir_path.c_str())) { + auto dir_to_delete = temp_dir_path.c_str(); + if (::rename(pathname.c_str(), dir_to_delete)) { if (ignore_if_missing && (errno == ENOENT)) { return 0; } - ALOGE("Couldn't rename %s -> %s: %s \n", pathname.c_str(), temp_dir_path.c_str(), - strerror(errno)); - return -errno; + ALOGE("Couldn't rename %s -> %s: %s \n", pathname.c_str(), dir_to_delete, strerror(errno)); + dir_to_delete = pathname.c_str(); } - return delete_dir_contents(temp_dir_path.c_str(), 1, exclusion_predicate, ignore_if_missing); + return delete_dir_contents(dir_to_delete, 1, exclusion_predicate, ignore_if_missing); } bool is_renamed_deleted_dir(const std::string& path) { |