Implement MEMLOCK and UNLOCK as functions

Converting these macros to functions declared static inline allow the
C type-checker to work and avoid warnings about unused expression
values.  These warnings break the build with clang.
This commit is contained in:
Travis Cross 2012-06-25 05:33:24 +00:00
parent c01a142665
commit 9e52f33d91
1 changed files with 8 additions and 3 deletions

View File

@ -209,9 +209,14 @@ void (*_su_home_destroy_mutexes)(void *mutex);
su_inline void safefree(void *b) { b ? free(b) : (void)0; }
#endif
#define MEMLOCK(h) \
((void)((h) && (h)->suh_lock ? _su_home_locker((h)->suh_lock) : 0), (h)->suh_blocks)
#define UNLOCK(h) ((void)((h) && (h)->suh_lock ? _su_home_unlocker((h)->suh_lock) : 0), NULL)
static inline su_block_t* MEMLOCK(const su_home_t *h) {
if (h && h->suh_lock) _su_home_locker(h->suh_lock);
return h->suh_blocks;
}
static inline void* UNLOCK(const su_home_t *h) {
if (h && h->suh_lock) _su_home_unlocker(h->suh_lock);
return NULL;
}
#ifdef NDEBUG
#define MEMCHECK 0