From b73f1f580d50b5f0792ec99c22a0eb4b355d7012 Mon Sep 17 00:00:00 2001 From: Andreas Gampe Date: Tue, 30 Jun 2015 10:52:46 -0700 Subject: [PATCH] ART: Unlink old file in OS::CreateEmptyFile Update the documentation to make clear that a new file is expected to be returned. A potentially existing file will not be reused (and cleared). Bug: 22047255 Change-Id: I0eb8601c7696d6f7b81547abcc06ff605826dc26 --- runtime/os.h | 3 ++- runtime/os_linux.cc | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/runtime/os.h b/runtime/os.h index 6248d5fc1..befe2e808 100644 --- a/runtime/os.h +++ b/runtime/os.h @@ -35,7 +35,8 @@ class OS { // Open an existing file with read/write access. static File* OpenFileReadWrite(const char* name); - // Create an empty file with read/write access. + // Create an empty file with read/write access. This is a *new* file, that is, if the file + // already exists, it is *not* overwritten, but unlinked, and a new inode will be used. static File* CreateEmptyFile(const char* name); // Open a file with the specified open(2) flags. diff --git a/runtime/os_linux.cc b/runtime/os_linux.cc index 22827891b..675699dae 100644 --- a/runtime/os_linux.cc +++ b/runtime/os_linux.cc @@ -36,6 +36,10 @@ File* OS::OpenFileReadWrite(const char* name) { } File* OS::CreateEmptyFile(const char* name) { + // In case the file exists, unlink it so we get a new file. This is necessary as the previous + // file may be in use and must not be changed. + unlink(name); + return OpenFileWithFlags(name, O_RDWR | O_CREAT | O_TRUNC); } -- 2.11.0