From 0ecaa025d263c6cb77ea21ccc8df3b2e4f667254 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ond=C5=99ej=20Kuzn=C3=ADk?= Date: Wed, 8 Dec 2021 17:17:18 +0000 Subject: [PATCH] ITS#9764 slapo-valsort: Maintain values in order of insertion --- servers/slapd/overlays/valsort.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/servers/slapd/overlays/valsort.c b/servers/slapd/overlays/valsort.c index e47eec10a9..92b1c3990b 100644 --- a/servers/slapd/overlays/valsort.c +++ b/servers/slapd/overlays/valsort.c @@ -88,7 +88,7 @@ static Syntax *syn_numericString; static int valsort_cf_func(ConfigArgs *c) { slap_overinst *on = (slap_overinst *)c->bi; - valsort_info vitmp, *vi; + valsort_info vitmp, *vi, **vip; const char *text = NULL; int i, is_numeric; struct berval bv = BER_BVNULL; @@ -200,10 +200,14 @@ valsort_cf_func(ConfigArgs *c) { c->log, c->cr_msg, c->argv[1] ); return(1); } + + for ( vip = &on->on_bi.bi_private; *vip; vip = &(*vip)->vi_next ) + /* Get to the end */ ; + vi = ch_malloc( sizeof(valsort_info) ); *vi = vitmp; - vi->vi_next = on->on_bi.bi_private; - on->on_bi.bi_private = vi; + vi->vi_next = *vip; + *vip = vi; return 0; } -- 2.47.3