Fix the COERCE_STATUS macro

Fix the COERCE_STATUS macro to handle _internal_error being declared
as void function.

Note that the function _internal_error does not return. Evaluating to
NOTMUCH_STATUS_SUCCESS is done purely to appease the compiler.

Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
This commit is contained in:
Justus Winter 2012-09-24 17:21:18 +02:00 committed by David Bremner
parent 8f0a4c80ff
commit faf6ede3ef

View file

@ -136,13 +136,17 @@ typedef enum _notmuch_private_status {
* to or greater than NOTMUCH_STATUS_LAST_STATUS. (The idea here is * to or greater than NOTMUCH_STATUS_LAST_STATUS. (The idea here is
* that the caller has previously handled any expected * that the caller has previously handled any expected
* notmuch_private_status_t values.) * notmuch_private_status_t values.)
*
* Note that the function _internal_error does not return. Evaluating
* to NOTMUCH_STATUS_SUCCESS is done purely to appease the compiler.
*/ */
#define COERCE_STATUS(private_status, format, ...) \ #define COERCE_STATUS(private_status, format, ...) \
((private_status >= (notmuch_private_status_t) NOTMUCH_STATUS_LAST_STATUS)\ ((private_status >= (notmuch_private_status_t) NOTMUCH_STATUS_LAST_STATUS)\
? \ ? \
(notmuch_status_t) _internal_error (format " (%s).\n", \ _internal_error (format " (%s).\n", \
##__VA_ARGS__, \ ##__VA_ARGS__, \
__location__) \ __location__), \
(notmuch_status_t) NOTMUCH_PRIVATE_STATUS_SUCCESS \
: \ : \
(notmuch_status_t) private_status) (notmuch_status_t) private_status)