From ace14dc3bc8c89e16e92c1b7cc750bf242e11dd4 Mon Sep 17 00:00:00 2001 From: Snaipe Date: Wed, 23 Sep 2015 00:42:30 +0200 Subject: [PATCH] Fixed sysctl errors being ignored when getting the number of processors on BSD --- src/compat/processor.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/compat/processor.c b/src/compat/processor.c index b0f5244..ba7ab9f 100644 --- a/src/compat/processor.c +++ b/src/compat/processor.c @@ -32,17 +32,17 @@ size_t get_processor_count(void) { return (size_t) sysinfo.dwNumberOfProcessors; #elif defined(BSD) int mib[2] = { CTL_HW, HW_AVAILCPU }; - long long count; + long long count = 0; size_t len = sizeof (count); /* get the number of CPUs from the system */ - sysctl(mib, 2, &count, &len, NULL, 0); + int res = sysctl(mib, 2, &count, &len, NULL, 0); - if (count < 1) { + if (count < 1 || res == -1) { mib[1] = HW_NCPU; - sysctl(mib, 2, &count, &len, NULL, 0); + res = sysctl(mib, 2, &count, &len, NULL, 0); - if (count < 1) + if (count < 1 || res == -1) count = 1; } return (size_t) count;