summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLasse Collin <lasse.collin@tukaani.org>2022-10-31 13:31:58 +0200
committerLasse Collin <lasse.collin@tukaani.org>2022-11-11 13:41:43 +0200
commit6930f14733757592a4f8d92513f642a5dcc9ec9c (patch)
treeded7f8bfd5c18a9b0550580f5c2cc09a71b888fc
parent1c8cbb5be3a97bf22e933777369c4cc28ef9ed5f (diff)
downloadxz-6930f14733757592a4f8d92513f642a5dcc9ec9c.tar.gz
Windows: Fix mythread_once() macro with Vista threads.
Don't call InitOnceComplete() if initialization was already done. So far mythread_once() has been needed only when building with --enable-small. windows/build.bash does this together with --disable-threads so the Vista-specific mythread_once() is never needed by those builds. VS project files or CMake-builds don't support HAVE_SMALL builds at all.
-rw-r--r--src/common/mythread.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/common/mythread.h b/src/common/mythread.h
index be22654..4138218 100644
--- a/src/common/mythread.h
+++ b/src/common/mythread.h
@@ -370,10 +370,11 @@ typedef struct {
BOOL pending_; \
if (!InitOnceBeginInitialize(&once_, 0, &pending_, NULL)) \
abort(); \
- if (pending_) \
+ if (pending_) { \
func(); \
- if (!InitOnceComplete(&once, 0, NULL)) \
- abort(); \
+ if (!InitOnceComplete(&once, 0, NULL)) \
+ abort(); \
+ } \
} while (0)
#endif