Mercurial > code
changeset 120:68784ea3fabb
Fix (p)array_find
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 28 Feb 2012 21:49:20 +0100 |
parents | d6a78dea70c9 |
children | 0635f98a2227 |
files | array.c parray.c |
diffstat | 2 files changed, 7 insertions(+), 11 deletions(-) [+] |
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; } /*
--- 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; } /*