diff array.c @ 120:68784ea3fabb

Fix (p)array_find
author David Demelier <markand@malikania.fr>
date Tue, 28 Feb 2012 21:49:20 +0100
parents d6a78dea70c9
children 59745a235d16
line wrap: on
line diff
--- a/array.c	Tue Feb 28 21:15:48 2012 +0100
+++ b/array.c	Tue Feb 28 21:49:20 2012 +0100
@@ -283,15 +283,13 @@
 {
 	int st, i;
 
-	for (i = st = 0; i < arr->length && !st; ++i)
+	for (i = st = 0; i < arr->length && st != 1; ++i)
 		st = fn((char *)arr->data + OFFSET(i), u);
 
-	if (st)
-		*(char **)dst = (char *)arr->data + OFFSET(--i);
-	else
-		st = 0;
+	if (st && dst)
+		*(char **)dst = (char *)arr->data + OFFSET(i - 1);
 
-	return st;
+	return (st) ? i - 1 : -1;
 }
 
 /*