From 4492173466fd72037bd6d74402030b62e4f3a73f Mon Sep 17 00:00:00 2001 From: Paul Dersey Date: Fri, 22 Jan 2021 10:56:36 -0500 Subject: [PATCH] Mes C Library: stdlib/qsort.c: Fix qswap segfault. * stdlib/qsort.c (qswap): Remove hard coded buffer size. Allow swapping of objects of arbitrary size. --- lib/stdlib/qsort.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/stdlib/qsort.c b/lib/stdlib/qsort.c index 4f3e61cb..68352f5c 100644 --- a/lib/stdlib/qsort.c +++ b/lib/stdlib/qsort.c @@ -1,6 +1,7 @@ /* -*-comment-start: "//";comment-end:""-*- * GNU Mes --- Maxwell Equations of Software * Copyright © 2017,2018 Jan (janneke) Nieuwenhuizen + * Copyright © 2021 Paul Dersey * * This file is part of GNU Mes. * @@ -24,10 +25,14 @@ void qswap (void *a, void *b, size_t size) { - char *buf[8]; - memcpy (buf, a, size); - memcpy (a, b, size); - memcpy (b, buf, size); + char *pa = a; + char *pb = b; + do + { + char tmp = *pa; + *pa++ = *pb; + *pb++ = tmp; + } while (--size > 0); } size_t