# HG changeset patch # User David Demelier # Date 1498885714 -7200 # Node ID 2e93742789fdbaa2a762670a945ac132d4c7ef9f # Parent 40f6b66ec70a79b3263889ea0b55d92bfa8cf717 Misc: OpenBSD fix for executable diff -r 40f6b66ec70a -r 2e93742789fd misc/executable.cpp --- a/misc/executable.cpp Sat Jul 01 06:33:51 2017 +0200 +++ b/misc/executable.cpp Sat Jul 01 07:08:34 2017 +0200 @@ -85,13 +85,14 @@ result = path; #elif defined(__OpenBSD__) char **paths, path[PATH_MAX + 1] = {0}; - int length, mib[] = { CTL_KERN, KERN_PROC_ARGS, getpid(), KERN_PROC_ARGV }; + int mib[] = { CTL_KERN, KERN_PROC_ARGS, getpid(), KERN_PROC_ARGV }; + size_t length = 0; - if (sysctl(mib, 4, nullptr, &length, nullptr, 0) < 0) + if (sysctl(mib, 4, 0, &length, 0, 0) < 0) throw std::runtime_error(std::strerror(errno)); - if ((paths = static_cast(std::malloc(length))) == nullptr) + if (!(paths = static_cast(std::malloc(length)))) throw std::runtime_error(std::strerror(errno)); - if (sysctl(mib, 4, paths, &length, nullptr, 0) < 0) { + if (sysctl(mib, 4, paths, &length, 0, 0) < 0) { std::free(paths); throw std::runtime_error(std::strerror(errno)); } @@ -100,7 +101,6 @@ result = path; std::free(paths); - std::free(path); #endif return result;