diff options
author | Xin Li <delphij@users.noreply.github.com> | 2022-09-08 01:37:37 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-08 17:37:37 +0900 |
commit | 7400628cb054a9a9651d69411a100fc9d518099f (patch) | |
tree | 1159ff190781225aa33150fd774df4e26d3f6c9c | |
parent | 78af05ba0f29d1fc290dc24a6a5fb645386e7d62 (diff) | |
download | ruby-7400628cb054a9a9651d69411a100fc9d518099f.tar.gz |
[Bug #18997] Don't define ruby_qsort when POSIX qsort_r is available
The current code would define ruby_qsort as a wrapper of qsort_s
when it is available. When both qsort_s and POSIX (GNU) qsort_r
are available, we should call qsort_r directly instead, and
the qsort_s wrapper is redundant.
-rw-r--r-- | util.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -218,6 +218,7 @@ ruby_strtoul(const char *str, char **endptr, int base) typedef int (cmpfunc_t)(const void*, const void*, void*); +#if !defined HAVE_GNU_QSORT_R #if defined HAVE_QSORT_S && defined RUBY_MSVCRT_VERSION /* In contrast to its name, Visual Studio qsort_s is incompatible with * C11 in the order of the comparison function's arguments, and same @@ -263,7 +264,7 @@ ruby_qsort(void* base, const size_t nel, const size_t size, cmpfunc_t *cmp, void qsort_s(base, nel, size, cmp, d); } # define HAVE_GNU_QSORT_R 1 -#elif !defined HAVE_GNU_QSORT_R +#else /* mm.c */ #define mmtype long @@ -530,7 +531,8 @@ ruby_qsort(void* base, const size_t nel, const size_t size, cmpfunc_t *cmp, void else goto nxt; /* need not to sort both sides */ } } -#endif /* HAVE_GNU_QSORT_R */ +#endif +#endif /* !HAVE_GNU_QSORT_R */ char * ruby_strdup(const char *str) |