diff options
| -rw-r--r-- | tools/test/iconv/posix/posix.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/tools/test/iconv/posix/posix.c b/tools/test/iconv/posix/posix.c index 7faed92416a3..3e813226fa5e 100644 --- a/tools/test/iconv/posix/posix.c +++ b/tools/test/iconv/posix/posix.c @@ -27,8 +27,8 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#include <sys/param.h> #include <sys/endian.h> -#include <sys/types.h> #include <err.h> #include <errno.h> @@ -66,18 +66,22 @@ static int open_2(void) { iconv_t cd[MAX_LIMIT]; - int i, ret; + size_t i; + int ret; errno = 0; + ret = 1; for (i = 0; i < MAX_LIMIT; i++) { cd[i] = iconv_open("ASCII", "UTF8"); - if (cd[i] == (iconv_t)-1) + if (cd[i] == (iconv_t)-1) { + if (errno == ENFILE || errno == EMFILE) + ret = 0; + cd[i] = NULL; break; + } } - ret = (cd[i] == (iconv_t)-1) && ((errno == ENFILE) || - (errno == EMFILE)) ? 0 : 1; - for (; i > 0; i--) + for (i = MIN(i, nitems(cd) - 1); i > 0; i--) iconv_close(cd[i]); return (ret); } |
