git: 9front

Download patch

ref: 405cb6b12e0367c26c96d4cd1df78bfb329b3e09
parent: 50e6a854fc3aa853145c4ff0122c1439a979ec58
author: Ori Bernstein <ori@eigenstate.org>
date: Tue Aug 10 22:27:48 EDT 2021

qsort: allow usize-sized arrays.

As part of the transition to 64 bit userspace
APIs, we need to make our libc functions which
take arrays all accept and deal with large sizes.

This does the work for qsort.

--- a/sys/src/libc/port/qsort.c
+++ b/sys/src/libc/port/qsort.c
@@ -8,12 +8,12 @@
 struct
 {
 	int	(*cmp)(void*, void*);
-	void	(*swap)(char*, char*, long);
-	long	es;
+	void	(*swap)(char*, char*, usize);
+	usize	es;
 } Sort;
 
 static	void
-swapb(char *i, char *j, long es)
+swapb(char *i, char *j, usize es)
 {
 	char c;
 
@@ -27,7 +27,7 @@
 }
 
 static	void
-swapi(char *ii, char *ij, long es)
+swapi(char *ii, char *ij, usize es)
 {
 	long *i, *j, c;
 
@@ -42,9 +42,9 @@
 }
 
 static	char*
-pivot(char *a, long n, Sort *p)
+pivot(char *a, usize n, Sort *p)
 {
-	long j;
+	usize j;
 	char *pi, *pj, *pk;
 
 	j = n/6 * p->es;
@@ -69,9 +69,9 @@
 }
 
 static	void
-qsorts(char *a, long n, Sort *p)
+qsorts(char *a, usize n, Sort *p)
 {
-	long j, es;
+	usize j, es;
 	char *pi, *pj, *pn;
 
 	es = p->es;
@@ -111,7 +111,7 @@
 }
 
 void
-qsort(void *va, long n, long es, int (*cmp)(void*, void*))
+qsort(void *va, usize n, usize es, int (*cmp)(void*, void*))
 {
 	Sort s;
 
--