summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortb <>2025-01-03 08:00:43 +0000
committertb <>2025-01-03 08:00:43 +0000
commit2a938d0fff660e4144c650e2c6bf8bfb207a01d3 (patch)
tree3ca9b40b22aefc003355cb94e068e05e5b7d60fa
parent24f27716ca0a6e89dba4717a89fd53148947ac93 (diff)
downloadopenbsd-2a938d0fff660e4144c650e2c6bf8bfb207a01d3.tar.gz
openbsd-2a938d0fff660e4144c650e2c6bf8bfb207a01d3.tar.bz2
openbsd-2a938d0fff660e4144c650e2c6bf8bfb207a01d3.zip
Make obj_bsearch_ex() resemble libc bsearch() a bit more
ok jsing
-rw-r--r--src/lib/libcrypto/stack/stack.c28
1 files changed, 12 insertions, 16 deletions
diff --git a/src/lib/libcrypto/stack/stack.c b/src/lib/libcrypto/stack/stack.c
index e50c1bcac0..3736dba648 100644
--- a/src/lib/libcrypto/stack/stack.c
+++ b/src/lib/libcrypto/stack/stack.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: stack.c,v 1.30 2024/12/28 19:07:24 tb Exp $ */ 1/* $OpenBSD: stack.c,v 1.31 2025/01/03 08:00:43 tb Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -203,31 +203,27 @@ obj_bsearch_ex(const void *key, const void *base_, int num, int size,
203{ 203{
204 const char *base = base_; 204 const char *base = base_;
205 int l, h, i = 0, c = 0; 205 int l, h, i = 0, c = 0;
206 const char *p = NULL;
207 206
208 if (num == 0) 207 if (num == 0)
209 return (NULL); 208 return NULL;
209
210 l = 0; 210 l = 0;
211 h = num; 211 h = num;
212 while (l < h) { 212 while (l < h) {
213 i = (l + h) / 2; 213 i = (l + h) / 2;
214 p = &(base[i * size]); 214 if ((c = cmp(key, &base[i * size])) == 0) {
215 c = (*cmp)(key, p); 215 /* Return first match. */
216 while (i > 0 && cmp(key, &base[(i - 1) * size]) == 0)
217 i--;
218 return &base[i * size];
219 }
216 if (c < 0) 220 if (c < 0)
217 h = i; 221 h = i;
218 else if (c > 0)
219 l = i + 1;
220 else 222 else
221 break; 223 l = i + 1;
222 }
223 if (c != 0)
224 p = NULL;
225 else if (c == 0) {
226 while (i > 0 && (*cmp)(key, &(base[(i - 1) * size])) == 0)
227 i--;
228 p = &(base[i * size]);
229 } 224 }
230 return (p); 225
226 return NULL;
231} 227}
232 228
233int 229int