summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--spill.c12
-rw-r--r--util.c6
2 files changed, 11 insertions, 7 deletions
diff --git a/spill.c b/spill.c
index c1599c0..1aab8e5 100644
--- a/spill.c
+++ b/spill.c
@@ -173,11 +173,13 @@ limit(BSet *b, int k, BSet *f)
 		bsclr(b, t);
 		tarr[i++] = t;
 	}
-	if (!f)
-		qsort(tarr, nt, sizeof tarr[0], tcmp0);
-	else {
-		fst = f;
-		qsort(tarr, nt, sizeof tarr[0], tcmp1);
+	if (nt > 1) {
+		if (!f)
+			qsort(tarr, nt, sizeof tarr[0], tcmp0);
+		else {
+			fst = f;
+			qsort(tarr, nt, sizeof tarr[0], tcmp1);
+		}
 	}
 	for (i=0; i<k && i<nt; i++)
 		bsset(b, tarr[i]);
diff --git a/util.c b/util.c
index f1a5383..0123e27 100644
--- a/util.c
+++ b/util.c
@@ -246,13 +246,15 @@ void
 idup(Ins **pd, Ins *s, ulong n)
 {
 	*pd = alloc(n * sizeof(Ins));
-	memcpy(*pd, s, n * sizeof(Ins));
+	if (n)
+		memcpy(*pd, s, n * sizeof(Ins));
 }
 
 Ins *
 icpy(Ins *d, Ins *s, ulong n)
 {
-	memcpy(d, s, n * sizeof(Ins));
+	if (n)
+		memcpy(d, s, n * sizeof(Ins));
 	return d + n;
 }