diff options
Diffstat (limited to 'package/mpd/0003-thread-Posix-Mutex-Cond-use-constexpr-only-with-glib.patch')
-rw-r--r-- | package/mpd/0003-thread-Posix-Mutex-Cond-use-constexpr-only-with-glib.patch | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/package/mpd/0003-thread-Posix-Mutex-Cond-use-constexpr-only-with-glib.patch b/package/mpd/0003-thread-Posix-Mutex-Cond-use-constexpr-only-with-glib.patch new file mode 100644 index 0000000000..26fd7f6216 --- /dev/null +++ b/package/mpd/0003-thread-Posix-Mutex-Cond-use-constexpr-only-with-glib.patch @@ -0,0 +1,97 @@ +From 42a5f0c4435757505bd515b68c2a27e8f7565f34 Mon Sep 17 00:00:00 2001 +From: Max Kellermann <max@duempel.org> +Date: Tue, 25 Aug 2015 12:46:12 +0200 +Subject: [PATCH] thread/Posix{Mutex,Cond}: use "constexpr" only with glibc + +Apparently all other C libraries are not compatible with "constexpr". +Those which are not will get a performance penalty, but at least they +work at all. + +[Thomas: taken from upstream commit 75dff6445063d9b49cca126fd661c9abbd680977.] +Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> +--- + src/thread/PosixCond.hxx | 16 ++++++++-------- + src/thread/PosixMutex.hxx | 16 ++++++++-------- + 2 files changed, 16 insertions(+), 16 deletions(-) + +diff --git a/src/thread/PosixCond.hxx b/src/thread/PosixCond.hxx +index b3fe204..73dbe02 100644 +--- a/src/thread/PosixCond.hxx ++++ b/src/thread/PosixCond.hxx +@@ -1,5 +1,5 @@ + /* +- * Copyright (C) 2009-2013 Max Kellermann <max@duempel.org> ++ * Copyright (C) 2009-2015 Max Kellermann <max@duempel.org> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions +@@ -41,9 +41,13 @@ class PosixCond { + pthread_cond_t cond; + + public: +-#if defined(__NetBSD__) || defined(__BIONIC__) +- /* NetBSD's PTHREAD_COND_INITIALIZER is not compatible with +- "constexpr" */ ++#ifdef __GLIBC__ ++ /* optimized constexpr constructor for pthread implementations ++ that support it */ ++ constexpr PosixCond():cond(PTHREAD_COND_INITIALIZER) {} ++#else ++ /* slow fallback for pthread implementations that are not ++ compatible with "constexpr" */ + PosixCond() { + pthread_cond_init(&cond, nullptr); + } +@@ -51,10 +55,6 @@ public: + ~PosixCond() { + pthread_cond_destroy(&cond); + } +-#else +- /* optimized constexpr constructor for sane POSIX +- implementations */ +- constexpr PosixCond():cond(PTHREAD_COND_INITIALIZER) {} + #endif + + PosixCond(const PosixCond &other) = delete; +diff --git a/src/thread/PosixMutex.hxx b/src/thread/PosixMutex.hxx +index 5805158..e0fd614 100644 +--- a/src/thread/PosixMutex.hxx ++++ b/src/thread/PosixMutex.hxx +@@ -1,5 +1,5 @@ + /* +- * Copyright (C) 2009-2013 Max Kellermann <max@duempel.org> ++ * Copyright (C) 2009-2015 Max Kellermann <max@duempel.org> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions +@@ -41,9 +41,13 @@ class PosixMutex { + pthread_mutex_t mutex; + + public: +-#if defined(__NetBSD__) || defined(__BIONIC__) +- /* NetBSD's PTHREAD_MUTEX_INITIALIZER is not compatible with +- "constexpr" */ ++#ifdef __GLIBC__ ++ /* optimized constexpr constructor for pthread implementations ++ that support it */ ++ constexpr PosixMutex():mutex(PTHREAD_MUTEX_INITIALIZER) {} ++#else ++ /* slow fallback for pthread implementations that are not ++ compatible with "constexpr" */ + PosixMutex() { + pthread_mutex_init(&mutex, nullptr); + } +@@ -51,10 +55,6 @@ public: + ~PosixMutex() { + pthread_mutex_destroy(&mutex); + } +-#else +- /* optimized constexpr constructor for sane POSIX +- implementations */ +- constexpr PosixMutex():mutex(PTHREAD_MUTEX_INITIALIZER) {} + #endif + + PosixMutex(const PosixMutex &other) = delete; +-- +2.6.4 + |