summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Andreas Gampe <agampe@google.com> 2015-06-30 10:52:46 -0700
committer Andreas Gampe <agampe@google.com> 2015-06-30 10:52:46 -0700
commitb73f1f580d50b5f0792ec99c22a0eb4b355d7012 (patch)
treee2d8711a0223184a7ae0042be908f03e9cf62fbb
parent49a17ec8427e2723bc8d36bb5eab52618bc3600a (diff)
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
-rw-r--r--runtime/os.h3
-rw-r--r--runtime/os_linux.cc4
2 files changed, 6 insertions, 1 deletions
diff --git a/runtime/os.h b/runtime/os.h
index 6248d5fc14..befe2e808a 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 22827891b0..675699daea 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);
}