AO_store_release(&key->hash[hash_val].ao, (AO_t)entry);
GC_dirty((/* no volatile */ void *)entry);
GC_dirty(key->hash + hash_val);
- pthread_mutex_unlock(&(key -> lock));
+ if (pthread_mutex_unlock(&key->lock) != 0)
+ ABORT("pthread_mutex_unlock failed (setspecific)");
return 0;
}
/* With GC, we're done, since the pointers from the cache will */
/* be overwritten, all local pointers to the entries will be */
/* dropped, and the entry will then be reclaimed. */
- pthread_mutex_unlock(&(key -> lock));
+ if (pthread_mutex_unlock(&key->lock) != 0)
+ ABORT("pthread_mutex_unlock failed (remove_specific after fork)");
}
/* Note that even the slow path doesn't lock. */