From 5178cde662b271fee628a463c09d4cdba4af0b99 Mon Sep 17 00:00:00 2001 From: wargloom Date: Thu, 30 Jul 2026 19:22:41 +0300 Subject: [PATCH] fix(similarity): skip empty fingerprint sort Signed-off-by: wargloom --- src/pipeline/pass_similarity.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/pipeline/pass_similarity.c b/src/pipeline/pass_similarity.c index 2985dfb95..db4297202 100644 --- a/src/pipeline/pass_similarity.c +++ b/src/pipeline/pass_similarity.c @@ -148,8 +148,12 @@ static int collect_fp_entries(cbm_gbuf_t *gbuf, fp_entry_t **out_entries) { }; } } - /* Canonicalize (determinism) — see cmp_fp_entry_by_qn. */ - qsort(entries, (size_t)count, sizeof(fp_entry_t), cmp_fp_entry_by_qn); + /* Canonicalize (determinism) — see cmp_fp_entry_by_qn. Avoid passing the + * NULL empty-set buffer to qsort: libc treats zero elements as a no-op, + * but the standard function contract still requires a valid base pointer. */ + if (count > 1) { + qsort(entries, (size_t)count, sizeof(fp_entry_t), cmp_fp_entry_by_qn); + } *out_entries = entries; return count; }