From 8fe58b90c2a1bcf2fba36d417c657935c28c5b6f Mon Sep 17 00:00:00 2001 From: Georg Baum Date: Mon, 7 Jul 2014 21:34:54 +0200 Subject: [PATCH] Make Formats::isZippedFile() threadsafe In this case I use a mutex, so the zip status of files is shared between threads. This is possible because a deadlock can't happen, and it should give better performance. --- src/Format.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Format.cpp b/src/Format.cpp index 2bc7ac534b..93383ac6c2 100644 --- a/src/Format.cpp +++ b/src/Format.cpp @@ -22,6 +22,7 @@ #include "support/filetools.h" #include "support/gettext.h" #include "support/lstrings.h" +#include "support/mutex.h" #include "support/os.h" #include "support/PathChanger.h" #include "support/Systemcall.h" @@ -479,11 +480,13 @@ struct ZippedInfo { /// Mapping absolute pathnames of files to their ZippedInfo metadata. static std::map zipped_; +static Mutex zipped_mutex; bool Formats::isZippedFile(support::FileName const & filename) const { string const & fname = filename.absFileName(); time_t timestamp = filename.lastModified(); + Mutex::Locker lock(&zipped_mutex); map::iterator it = zipped_.find(fname); if (it != zipped_.end() && it->second.timestamp == timestamp) return it->second.zipped; -- 2.39.5