Skip to content

Fix build with GLib 2.81.x and glibc 2.39

Simon McVittie requested to merge wip/smcv/qsort into main
  • Avoid deprecated g_qsort_with_data()

    For historical reasons g_qsort_with_data() "only" works with up to 2**31 items, so it won't necessarily work for pathologically large arrays and therefore is deprecated.

    The advantage of g_qsort_with_data() and its replacement g_sort_array() is that GLib guarantees that they are a stable sort (will not permute items that already compare equal), which is not a guarantee for glibc's qsort() and qsort_r(). However, in each of these places we are sorting the keys from a hash table, which are unique anyway, so there is no advantage to a stable sort.

  • build: Don't warn for redundant declarations

    Redundant declarations are explicitly allowed in C11, and glibc 2.39's implementation of _Static_assert uses them, so we need to avoid failing on these in order to build successfully on Debian 13 prereleases.

--

The actual reason for the qsort deprecation is unimportant (realistically, none of these arrays are going to have gigabytes of items), but the deprecation breaks our CI build.

Forwarded to Flatpak in https://github.com/flatpak/flatpak/pull/5896 but I haven't tested that one thoroughly (and it's less important in Flatpak, because Flatpak's build doesn't normally make deprecation warnings fatal).

Edited by Simon McVittie

Merge request reports