aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorKyle Evans <kevans@FreeBSD.org>2022-01-11 23:41:10 +0000
committerKyle Evans <kevans@FreeBSD.org>2022-08-11 16:33:28 +0000
commit814bd1ed438f7dfc5bedcb1f3e772a46fe7026bb (patch)
treee52509de568eac5b3c04627ca6a855c3204b1ebb /tools
parent7d72ff905770a64a22125c890438189db71104ae (diff)
Diffstat (limited to 'tools')
-rw-r--r--tools/test/iconv/posix/posix.c16
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);
}