diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2020-09-04 20:09:28 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2020-09-20 15:02:35 +0300 |
commit | 7720c4aefa95ee9df6e5d464c187efa7141f1302 (patch) | |
tree | c36def5f7da3a29783f2285e0b12b049355fb848 /src/android/jpeg/exif.cpp | |
parent | 7208e70211a6ea35b9d889aedf942e607d20d66a (diff) |
android: jpeg: exif: Use reentrant localtime_r()
The std::localtime() function isn't thread-safe, and we have no
guarantee whether other threads in the camera service may or may not
call it. Replace it with localtime_r(). This requires switching from
ctime to time.h, as there is no std::localtime_r() function.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Umang Jain <email@uajain.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Diffstat (limited to 'src/android/jpeg/exif.cpp')
-rw-r--r-- | src/android/jpeg/exif.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/android/jpeg/exif.cpp b/src/android/jpeg/exif.cpp index 1ced5534..c0dbfcc2 100644 --- a/src/android/jpeg/exif.cpp +++ b/src/android/jpeg/exif.cpp @@ -186,9 +186,11 @@ void Exif::setSize(const Size &size) void Exif::setTimestamp(time_t timestamp) { + struct tm tm; + localtime_r(×tamp, &tm); + char str[20]; - std::strftime(str, sizeof(str), "%Y:%m:%d %H:%M:%S", - std::localtime(×tamp)); + strftime(str, sizeof(str), "%Y:%m:%d %H:%M:%S", &tm); std::string ts(str); setString(EXIF_IFD_0, EXIF_TAG_DATE_TIME, EXIF_FORMAT_ASCII, ts); |