From: Lennart Poettering Date: Fri, 28 Feb 2025 08:56:02 +0000 (+0100) Subject: pidref: take more fields into account in pidref_compare_func() X-Git-Tag: v258-rc1~1218^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=09b33905299272f2ee48a76e9eb8a011e4196b77;p=thirdparty%2Fsystemd.git pidref: take more fields into account in pidref_compare_func() --- diff --git a/src/basic/pidref.c b/src/basic/pidref.c index ef52cd7a421..d8c61a17c0f 100644 --- a/src/basic/pidref.c +++ b/src/basic/pidref.c @@ -462,7 +462,31 @@ void pidref_hash_func(const PidRef *pidref, struct siphash *state) { } int pidref_compare_func(const PidRef *a, const PidRef *b) { - return CMP(a->pid, b->pid); + int r; + + assert(a); + assert(b); + + r = CMP(pidref_is_set(a), pidref_is_set(b)); + if (r != 0) + return r; + + r = CMP(pidref_is_automatic(a), pidref_is_automatic(b)); + if (r != 0) + return r; + + r = CMP(pidref_is_remote(a), pidref_is_remote(b)); + if (r != 0) + return r; + + r = CMP(a->pid, b->pid); + if (r != 0) + return r; + + if (a->fd_id != 0 && b->fd_id != 0) + return CMP(a->fd_id, b->fd_id); + + return 0; } DEFINE_HASH_OPS(pidref_hash_ops, PidRef, pidref_hash_func, pidref_compare_func);