]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
isc_mutex_init and isc_condition_init failures are now fatal
authorWitold Kręcicki <wpk@isc.org>
Wed, 14 Nov 2018 08:42:20 +0000 (08:42 +0000)
committerWitold Kręcicki <wpk@isc.org>
Thu, 22 Nov 2018 11:51:49 +0000 (11:51 +0000)
lib/isc/pthreads/include/isc/condition.h
lib/isc/pthreads/mutex.c

index 28338c7fdf8e6b04a7db2c80c38f391f13c0548f..92d33ad3242d65b18822a8d41c6fba8f00da81ab 100644 (file)
@@ -23,8 +23,8 @@
 typedef pthread_cond_t isc_condition_t;
 
 #define isc_condition_init(cp) \
-       ((pthread_cond_init((cp), NULL) == 0) ? \
-        ISC_R_SUCCESS : ISC_R_UNEXPECTED)
+       (RUNTIME_CHECK(pthread_cond_init((cp), NULL) == 0), \
+        ISC_R_SUCCESS)
 
 #if ISC_MUTEX_PROFILE
 #define isc_condition_wait(cp, mp) \
index 76bac089b69a602c094f339b17f4ae9bda02571b..b290b50fe002f64aad05c7458ab0a76028953310 100644 (file)
@@ -88,10 +88,10 @@ isc_mutex_init_profile(isc_mutex_t *mp, const char *file, int line) {
        int i, err;
 
        err = pthread_mutex_init(&mp->mutex, NULL);
-       if (err == ENOMEM)
-               return (ISC_R_NOMEMORY);
-       if (err != 0)
-               return (ISC_R_UNEXPECTED);
+       if (err != 0) {
+               strerror_r(err, strbuf, sizeof(strbuf));
+               isc_error_fatal(file, line, "pthread_mutex_init failed: %s", strbuf);
+       }
 
        RUNTIME_CHECK(pthread_mutex_lock(&statslock) == 0);
 
@@ -294,9 +294,7 @@ isc__mutex_init(isc_mutex_t *mp, const char *file, unsigned int line) {
                return (ISC_R_NOMEMORY);
        if (err != 0) {
                strerror_r(err, strbuf, sizeof(strbuf));
-               UNEXPECTED_ERROR(file, line, "isc_mutex_init() failed: %s",
-                                strbuf);
-               result = ISC_R_UNEXPECTED;
+               isc_error_fatal(file, line, "pthread_mutex_init failed: %s", strbuf);
        }
        return (result);
 }