diff --git a/build-aux/syntax-check.mk b/build-aux/syntax-check.mk index 309ca0c29a..eaeb6d4f23 100644 --- a/build-aux/syntax-check.mk +++ b/build-aux/syntax-check.mk @@ -248,6 +248,13 @@ sc_prohibit_canonicalize_file_name: halt='use virFileCanonicalizePath() instead of canonicalize_file_name()' \ $(_sc_search_regexp) +# qsort from glibc has unstable sort ordering for "equal" members +sc_prohibit_qsort: + @prohibit='\<(qsort|qsort_r) *\(' \ + exclude='exempt from syntax-check' \ + halt='use g_qsort_with_data instead of qsort' \ + $(_sc_search_regexp) + # Insist on correct types for [pug]id. sc_correct_id_types: @prohibit='\<(int|long) *[pug]id\>' \ diff --git a/tools/nss/libvirt_nss.c b/tools/nss/libvirt_nss.c index ff6ea1d373..d79a00a1b0 100644 --- a/tools/nss/libvirt_nss.c +++ b/tools/nss/libvirt_nss.c @@ -71,7 +71,8 @@ sortAddr(leaseAddress *tmpAddress, size_t ntmpAddress) { if (tmpAddress) - qsort(tmpAddress, ntmpAddress, sizeof(*tmpAddress), leaseAddressSorter); + qsort(tmpAddress, ntmpAddress, /* exempt from syntax-check */ + sizeof(*tmpAddress), leaseAddressSorter); }