diff --git a/base/include/android-base/test_utils.h b/base/include/android-base/test_utils.h index c0bf0c1e1..07a5edda0 100644 --- a/base/include/android-base/test_utils.h +++ b/base/include/android-base/test_utils.h @@ -26,6 +26,10 @@ class TemporaryFile { TemporaryFile(); ~TemporaryFile(); + // Release the ownership of fd, caller is reponsible for closing the + // fd or stream properly. + int release(); + int fd; char path[1024]; diff --git a/base/test_utils.cpp b/base/test_utils.cpp index 636477d36..1cfa9e66f 100644 --- a/base/test_utils.cpp +++ b/base/test_utils.cpp @@ -85,10 +85,18 @@ TemporaryFile::TemporaryFile() { } TemporaryFile::~TemporaryFile() { - close(fd); + if (fd != -1) { + close(fd); + } unlink(path); } +int TemporaryFile::release() { + int result = fd; + fd = -1; + return result; +} + void TemporaryFile::init(const std::string& tmp_dir) { snprintf(path, sizeof(path), "%s%cTemporaryFile-XXXXXX", tmp_dir.c_str(), OS_PATH_SEPARATOR);