From 4e85ff0ed26d07f2499ce32087db5491b32f9e70 Mon Sep 17 00:00:00 2001 From: Hyunbin Lee Date: Wed, 7 Aug 2013 16:03:49 +0900 Subject: [PATCH] Replace localtime() with localtime_r() for thread-safety Change-Id: I91fcd0a5f44bf704046695d283d956d92a5c7409 Signed-off-by: Hyunbin Lee --- src/io/FIo_DirEnumeratorImpl.cpp | 5 +++-- src/io/FIo_FileUtil.cpp | 9 +++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/io/FIo_DirEnumeratorImpl.cpp b/src/io/FIo_DirEnumeratorImpl.cpp index 1d39563..d3ce322 100644 --- a/src/io/FIo_DirEnumeratorImpl.cpp +++ b/src/io/FIo_DirEnumeratorImpl.cpp @@ -159,8 +159,9 @@ _DirEnumeratorImpl::MoveNext(void) SysSecureTryReturnResult(NID_IO, ret == 0, __ConvertNativeErrorToResult(errno), "Failed to get attributes for directory entry (%s), errno: %d (%s)", pEntryPath.get(), errno, strerror(errno)); - struct tm* pTm = localtime(&statbuf.st_mtime); - SysTryReturnResult(NID_IO, pTm != null, E_SYSTEM, "Failed to call localtime() (%s).", strerror(errno)); + struct tm resultTm; + struct tm* pTm = localtime_r(&statbuf.st_mtime, &resultTm); + SysTryReturnResult(NID_IO, pTm != null, E_SYSTEM, "Failed to get local time (%s).", strerror(errno)); DateTime dateTime; r = dateTime.SetValue(_BASE_YEAR + pTm->tm_year, 1 + pTm->tm_mon, pTm->tm_mday, pTm->tm_hour, pTm->tm_min, pTm->tm_sec); diff --git a/src/io/FIo_FileUtil.cpp b/src/io/FIo_FileUtil.cpp index 2f00b57..7a3858b 100644 --- a/src/io/FIo_FileUtil.cpp +++ b/src/io/FIo_FileUtil.cpp @@ -344,13 +344,14 @@ _FileUtil::GetAttributes(const String& filePath, FileAttributes& attribute) // attributes attr = statbuf.st_mode; - pTm = localtime(&statbuf.st_mtime); - SysTryReturnResult(NID_IO, pTm != null, E_SYSTEM, "Failed to call localtime() (%s).", strerror(errno)); + struct tm resultTm; + pTm = localtime_r(&statbuf.st_mtime, &resultTm); + SysTryReturnResult(NID_IO, pTm != null, E_SYSTEM, "Failed to get local time (%s).", strerror(errno)); r = dateTime.SetValue(_BASE_YEAR + pTm->tm_year, 1 + pTm->tm_mon, pTm->tm_mday, pTm->tm_hour, pTm->tm_min, pTm->tm_sec); SysTryReturn(NID_IO, (!IsFailed(r)), r, r, "[%s] Failed to set DateTime.", GetErrorMessage(r)); - pTm = localtime(&statbuf.st_mtime); - SysTryReturnResult(NID_IO, pTm != null, E_SYSTEM, "Failed to call localtime() (%s).", strerror(errno)); + pTm = localtime_r(&statbuf.st_mtime, &resultTm); + SysTryReturnResult(NID_IO, pTm != null, E_SYSTEM, "Failed to get local time (%s).", strerror(errno)); r = modifiedTime.SetValue(_BASE_YEAR + pTm->tm_year, 1 + pTm->tm_mon, pTm->tm_mday, pTm->tm_hour, pTm->tm_min, pTm->tm_sec); SysTryReturn(NID_IO, (!IsFailed(r)), r, r, "[%s] Failed to set DateTime.", GetErrorMessage(r)); -- 2.7.4