Replace localtime() with localtime_r() for thread-safety
authorHyunbin Lee <hyunbin.lee@samsung.com>
Wed, 7 Aug 2013 07:03:49 +0000 (16:03 +0900)
committerHyunbin Lee <hyunbin.lee@samsung.com>
Wed, 7 Aug 2013 07:04:48 +0000 (16:04 +0900)
Change-Id: I91fcd0a5f44bf704046695d283d956d92a5c7409
Signed-off-by: Hyunbin Lee <hyunbin.lee@samsung.com>
src/io/FIo_DirEnumeratorImpl.cpp
src/io/FIo_FileUtil.cpp

index 1d39563..d3ce322 100644 (file)
@@ -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);
index 2f00b57..7a3858b 100644 (file)
@@ -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));