From 52f0aeb8e9f16fa5c3067f6a36be701354448924 Mon Sep 17 00:00:00 2001 From: Andreas Gampe Date: Fri, 26 Jun 2015 18:58:42 -0700 Subject: ART: Unlink target oat file before compiling Dex2oat must create a new file (new inode) when writing to a target given by name, as the existing file may be in use. So unlink any existing file first. Bug: 22047255 Change-Id: Ief942c71564076e39c1e8340d5c4c55286f75896 --- dex2oat/dex2oat.cc | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'dex2oat') diff --git a/dex2oat/dex2oat.cc b/dex2oat/dex2oat.cc index 7a23746..74d5c0c 100644 --- a/dex2oat/dex2oat.cc +++ b/dex2oat/dex2oat.cc @@ -1038,6 +1038,10 @@ class Dex2Oat FINAL { bool OpenFile() { bool create_file = !oat_unstripped_.empty(); // as opposed to using open file descriptor if (create_file) { + // We're supposed to create this file. If the file already exists, it may be in use currently. + // We must not change the content of that file, then. So unlink it first. + unlink(oat_unstripped_.c_str()); + oat_file_.reset(OS::CreateEmptyFile(oat_unstripped_.c_str())); if (oat_location_.empty()) { oat_location_ = oat_filename_; -- cgit v1.1