# HG changeset patch # User David Demelier # Date 1330462160 -3600 # Node ID 68784ea3fabb76cdaa2ad237e503d5d2c0d1eec8 # Parent d6a78dea70c9639f516b02105c6d5ac06ab73503 Fix (p)array_find diff -r d6a78dea70c9 -r 68784ea3fabb array.c --- 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; } /* diff -r d6a78dea70c9 -r 68784ea3fabb parray.c --- a/parray.c Tue Feb 28 21:15:48 2012 +0100 +++ b/parray.c Tue Feb 28 21:49:20 2012 +0100 @@ -266,12 +266,10 @@ for (i = st = 0; i < arr->length && st != 1; ++i) st = fn(arr->data[i], u); - if (st) - *(void **)ptr = arr->data[--i]; - else - i = -1; + if (st && ptr) + *(void **)ptr = arr->data[i - 1]; - return i; + return (st) ? i - 1 : -1; } /*