Module Name:    src
Committed By:   christos
Date:           Sat Mar 12 17:31:40 UTC 2022

Modified Files:
        src/lib/libc/gen: fts.c scandir.c setmode.3 setmode.c stringlist.c
        src/lib/libc/net: getprotoent_r.c getservent_r.c
        src/lib/libc/stdio: vfwprintf.c
        src/lib/libc/stdlib: _env.c hcreate.c radixsort.c
        src/lib/libc/string: wcsdup.c

Log Message:
reallocarr returns errno. preserve it.


To generate a diff of this commit:
cvs rdiff -u -r1.50 -r1.51 src/lib/libc/gen/fts.c
cvs rdiff -u -r1.29 -r1.30 src/lib/libc/gen/scandir.c
cvs rdiff -u -r1.22 -r1.23 src/lib/libc/gen/setmode.3
cvs rdiff -u -r1.36 -r1.37 src/lib/libc/gen/setmode.c
cvs rdiff -u -r1.14 -r1.15 src/lib/libc/gen/stringlist.c
cvs rdiff -u -r1.7 -r1.8 src/lib/libc/net/getprotoent_r.c
cvs rdiff -u -r1.12 -r1.13 src/lib/libc/net/getservent_r.c
cvs rdiff -u -r1.37 -r1.38 src/lib/libc/stdio/vfwprintf.c
cvs rdiff -u -r1.12 -r1.13 src/lib/libc/stdlib/_env.c
cvs rdiff -u -r1.11 -r1.12 src/lib/libc/stdlib/hcreate.c
cvs rdiff -u -r1.21 -r1.22 src/lib/libc/stdlib/radixsort.c
cvs rdiff -u -r1.5 -r1.6 src/lib/libc/string/wcsdup.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libc/gen/fts.c
diff -u src/lib/libc/gen/fts.c:1.50 src/lib/libc/gen/fts.c:1.51
--- src/lib/libc/gen/fts.c:1.50	Tue Nov  2 04:39:20 2021
+++ src/lib/libc/gen/fts.c	Sat Mar 12 12:31:39 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: fts.c,v 1.50 2021/11/02 08:39:20 nia Exp $	*/
+/*	$NetBSD: fts.c,v 1.51 2022/03/12 17:31:39 christos Exp $	*/
 
 /*-
  * Copyright (c) 1990, 1993, 1994
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)fts.c	8.6 (Berkeley) 8/14/94";
 #else
-__RCSID("$NetBSD: fts.c,v 1.50 2021/11/02 08:39:20 nia Exp $");
+__RCSID("$NetBSD: fts.c,v 1.51 2022/03/12 17:31:39 christos Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -1015,9 +1015,10 @@ fts_sort(FTS *sp, FTSENT *head, size_t n
 	 * 40 so don't realloc one entry at a time.
 	 */
 	if (nitems > sp->fts_nitems) {
-		if (reallocarr(&sp->fts_array,
-		    nitems + 40, sizeof(FTSENT *)) != 0)
-			return (head);
+		errno = reallocarr(&sp->fts_array,
+		    nitems + 40, sizeof(*sp->fts_array));
+		if (errno)
+			return head;
 		sp->fts_nitems = fts_nitems_truncate(nitems + 40);
 	}
 	for (ap = sp->fts_array, p = head; p; p = p->fts_link)

Index: src/lib/libc/gen/scandir.c
diff -u src/lib/libc/gen/scandir.c:1.29 src/lib/libc/gen/scandir.c:1.30
--- src/lib/libc/gen/scandir.c:1.29	Fri Oct 29 06:40:00 2021
+++ src/lib/libc/gen/scandir.c	Sat Mar 12 12:31:39 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: scandir.c,v 1.29 2021/10/29 10:40:00 nia Exp $	*/
+/*	$NetBSD: scandir.c,v 1.30 2022/03/12 17:31:39 christos Exp $	*/
 
 /*
  * Copyright (c) 1983, 1993
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)scandir.c	8.3 (Berkeley) 1/2/94";
 #else
-__RCSID("$NetBSD: scandir.c,v 1.29 2021/10/29 10:40:00 nia Exp $");
+__RCSID("$NetBSD: scandir.c,v 1.30 2022/03/12 17:31:39 christos Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -94,6 +94,7 @@ scandir(const char *dirname, struct dire
 	struct dirent *d, *p, **names;
 	size_t nitems, arraysz;
 	DIR *dirp;
+	int serrno;
 
 	_DIAGASSERT(dirname != NULL);
 	_DIAGASSERT(namelist != NULL);
@@ -105,7 +106,8 @@ scandir(const char *dirname, struct dire
 		goto bad;
 
 	names = NULL;
-	if (reallocarr(&names, arraysz, sizeof(*names)) != 0)
+	errno = reallocarr(&names, arraysz, sizeof(*names));
+	if (errno)
 		goto bad;
 
 	nitems = 0;
@@ -120,7 +122,8 @@ scandir(const char *dirname, struct dire
 		if (nitems >= arraysz) {
 			if ((arraysz = dirsize(dirp->dd_fd, arraysz)) == 0)
 				goto bad2;
-			if (reallocarr(&names, arraysz, sizeof(*names)) != 0)
+			errno = reallocarr(&names, arraysz, sizeof(*names));
+			if (errno)
 				goto bad2;
 		}
 
@@ -146,10 +149,14 @@ scandir(const char *dirname, struct dire
 	return (int)nitems;
 
 bad2:
+	serrno = errno;
 	while (nitems-- > 0)
 		free(names[nitems]);
 	free(names);
+	errno = serrno;
 bad:
+	serrno = errno;
 	(void)closedir(dirp);
+	errno = serrno;
 	return -1;
 }

Index: src/lib/libc/gen/setmode.3
diff -u src/lib/libc/gen/setmode.3:1.22 src/lib/libc/gen/setmode.3:1.23
--- src/lib/libc/gen/setmode.3:1.22	Mon Jul  3 17:32:49 2017
+++ src/lib/libc/gen/setmode.3	Sat Mar 12 12:31:39 2022
@@ -1,4 +1,4 @@
-.\"	$NetBSD: setmode.3,v 1.22 2017/07/03 21:32:49 wiz Exp $
+.\"	$NetBSD: setmode.3,v 1.23 2022/03/12 17:31:39 christos Exp $
 .\"
 .\" Copyright (c) 1989, 1991, 1993
 .\"	The Regents of the University of California.  All rights reserved.
@@ -29,7 +29,7 @@
 .\"
 .\"     @(#)setmode.3	8.2 (Berkeley) 4/28/95
 .\"
-.Dd January 4, 2009
+.Dd March 12, 2022
 .Dt SETMODE 3
 .Os
 .Sh NAME
@@ -111,7 +111,7 @@ function
 may fail and set
 .Va errno
 for any of the errors specified for the library routines
-.Xr malloc 3
+.Xr reallocarr 3
 or
 .Xr strtol 3 .
 In addition,

Index: src/lib/libc/gen/setmode.c
diff -u src/lib/libc/gen/setmode.c:1.36 src/lib/libc/gen/setmode.c:1.37
--- src/lib/libc/gen/setmode.c:1.36	Sat Mar 12 03:32:02 2022
+++ src/lib/libc/gen/setmode.c	Sat Mar 12 12:31:39 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: setmode.c,v 1.36 2022/03/12 08:32:02 nia Exp $	*/
+/*	$NetBSD: setmode.c,v 1.37 2022/03/12 17:31:39 christos Exp $	*/
 
 /*
  * Copyright (c) 1989, 1993, 1994
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)setmode.c	8.2 (Berkeley) 3/25/94";
 #else
-__RCSID("$NetBSD: setmode.c,v 1.36 2022/03/12 08:32:02 nia Exp $");
+__RCSID("$NetBSD: setmode.c,v 1.37 2022/03/12 17:31:39 christos Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -164,10 +164,9 @@ common:			if (set->cmd2 & CMD2_CLR) {
 		BITCMD *newset;						\
 		setlen += SET_LEN_INCR;					\
 		newset = saveset;					\
-		if (reallocarr(&newset, setlen, sizeof(BITCMD)) != 0) {	\
-			errno = ENOMEM;					\
+		errno = reallocarr(&newset, setlen, sizeof(*newset));	\
+		if (errno)						\
 			goto out;					\
-		}							\
 		set = newset + (set - saveset);				\
 		saveset = newset;					\
 		endset = newset + (setlen - 2);				\
@@ -208,10 +207,9 @@ setmode(const char *p)
 
 	setlen = SET_LEN + 2;
 	set = NULL;
-	if (reallocarr(&set, setlen, sizeof(BITCMD)) != 0) {
-		errno = ENOMEM;
-		return (NULL);
-	}
+	errno = reallocarr(&set, setlen, sizeof(*set));
+	if (errno)
+		return NULL;
 	saveset = set;
 	endset = set + (setlen - 2);
 

Index: src/lib/libc/gen/stringlist.c
diff -u src/lib/libc/gen/stringlist.c:1.14 src/lib/libc/gen/stringlist.c:1.15
--- src/lib/libc/gen/stringlist.c:1.14	Wed May 20 21:29:13 2015
+++ src/lib/libc/gen/stringlist.c	Sat Mar 12 12:31:39 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: stringlist.c,v 1.14 2015/05/21 01:29:13 christos Exp $	*/
+/*	$NetBSD: stringlist.c,v 1.15 2022/03/12 17:31:39 christos Exp $	*/
 
 /*-
  * Copyright (c) 1994, 1999 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: stringlist.c,v 1.14 2015/05/21 01:29:13 christos Exp $");
+__RCSID("$NetBSD: stringlist.c,v 1.15 2022/03/12 17:31:39 christos Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -69,9 +69,11 @@ sl_init(void)
 	sl->sl_cur = 0;
 	sl->sl_max = _SL_CHUNKSIZE;
 	sl->sl_str = NULL;
-	errno = reallocarr(&sl->sl_str, sl->sl_max, sizeof(char *));
+	errno = reallocarr(&sl->sl_str, sl->sl_max, sizeof(*sl->sl_str));
 	if (errno) {
+		int serrno = errno;
 		free(sl);
+		errno = serrno;
 		sl = NULL;
 	}
 	return sl;
@@ -91,7 +93,7 @@ sl_add(StringList *sl, char *name)
 		char	**new = sl->sl_str;
 
 		errno = reallocarr(&new, (sl->sl_max + _SL_CHUNKSIZE),
-		    sizeof(char *));
+		    sizeof(*new));
 		if (errno)
 			return -1;
 		sl->sl_max += _SL_CHUNKSIZE;

Index: src/lib/libc/net/getprotoent_r.c
diff -u src/lib/libc/net/getprotoent_r.c:1.7 src/lib/libc/net/getprotoent_r.c:1.8
--- src/lib/libc/net/getprotoent_r.c:1.7	Sat Mar 12 03:41:38 2022
+++ src/lib/libc/net/getprotoent_r.c	Sat Mar 12 12:31:39 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: getprotoent_r.c,v 1.7 2022/03/12 08:41:38 nia Exp $	*/
+/*	$NetBSD: getprotoent_r.c,v 1.8 2022/03/12 17:31:39 christos Exp $	*/
 
 /*
  * Copyright (c) 1983, 1993
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)getprotoent.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: getprotoent_r.c,v 1.7 2022/03/12 08:41:38 nia Exp $");
+__RCSID("$NetBSD: getprotoent_r.c,v 1.8 2022/03/12 17:31:39 christos Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -87,6 +87,7 @@ getprotoent_r(struct protoent *pr, struc
 {
 	char *p, *cp, **q;
 	size_t i = 0;
+	int serrno;
 
 	if (pd->fp == NULL && (pd->fp = fopen(_PATH_PROTOCOLS, "re")) == NULL)
 		return NULL;
@@ -112,12 +113,10 @@ getprotoent_r(struct protoent *pr, struc
 		if (pd->aliases == NULL) {
 			pd->aliases = NULL;
 			pd->maxaliases = 10;
-			if (reallocarr(&pd->aliases,
-			    pd->maxaliases, sizeof(char *)) != 0) {
-				endprotoent_r(pd);
-				errno = ENOMEM;
-				return NULL;
-			}
+			errno = reallocarr(&pd->aliases,
+			    pd->maxaliases, sizeof(*pd->aliases));
+			if (errno)
+				goto bad;
 		}
 		q = pr->p_aliases = pd->aliases;
 		if (p != NULL) {
@@ -129,12 +128,10 @@ getprotoent_r(struct protoent *pr, struc
 				}
 				if (i == pd->maxaliases - 2) {
 					pd->maxaliases *= 2;
-					if (reallocarr(&q,
-					    pd->maxaliases, sizeof(char *)) != 0) {
-						endprotoent_r(pd);
-						errno = ENOMEM;
-						return NULL;
-					}
+					errno = reallocarr(&q,
+					    pd->maxaliases, sizeof(*q));
+					if (errno)
+						goto bad;
 					pr->p_aliases = pd->aliases = q;
 				}
 				q[i++] = cp;
@@ -147,4 +144,9 @@ getprotoent_r(struct protoent *pr, struc
 		q[i] = NULL;
 		return pr;
 	}
+bad:
+	serrno = errno;
+	endprotoent_r(pd);
+	errno = serrno;
+	return NULL;
 }

Index: src/lib/libc/net/getservent_r.c
diff -u src/lib/libc/net/getservent_r.c:1.12 src/lib/libc/net/getservent_r.c:1.13
--- src/lib/libc/net/getservent_r.c:1.12	Sat Mar 12 03:43:11 2022
+++ src/lib/libc/net/getservent_r.c	Sat Mar 12 12:31:39 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: getservent_r.c,v 1.12 2022/03/12 08:43:11 nia Exp $	*/
+/*	$NetBSD: getservent_r.c,v 1.13 2022/03/12 17:31:39 christos Exp $	*/
 
 /*
  * Copyright (c) 1983, 1993
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)getservent.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: getservent_r.c,v 1.12 2022/03/12 08:43:11 nia Exp $");
+__RCSID("$NetBSD: getservent_r.c,v 1.13 2022/03/12 17:31:39 christos Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -292,11 +292,10 @@ _servent_parsedb(struct servent_data *sd
 	if (sd->aliases == NULL) {
 		sd->maxaliases = 10;
 		sd->aliases = NULL;
-		if (reallocarr(&sd->aliases,
-		    sd->maxaliases, sizeof(char *)) != 0) {
-			errno = ENOMEM;
+		errno = reallocarr(&sd->aliases,
+		    sd->maxaliases, sizeof(*sd->aliases));
+		if (errno)
 			goto fail;
-		}
 	}
 	sp->s_aliases = sd->aliases;
 	i = 0;
@@ -306,10 +305,9 @@ _servent_parsedb(struct servent_data *sd
 		if (i == sd->maxaliases - 2) {
 			sd->maxaliases *= 2;
 			q = sd->aliases;
-			if (reallocarr(&q, sd->maxaliases, sizeof(*q)) != 0) {
-				errno = ENOMEM;
+			errno = reallocarr(&q, sd->maxaliases, sizeof(*q));
+			if (errno)
 				goto fail;
-			}
 			sp->s_aliases = sd->aliases = q;
 		}
 		sp->s_aliases[i++] = __UNCONST(data + 1);

Index: src/lib/libc/stdio/vfwprintf.c
diff -u src/lib/libc/stdio/vfwprintf.c:1.37 src/lib/libc/stdio/vfwprintf.c:1.38
--- src/lib/libc/stdio/vfwprintf.c:1.37	Sat Mar 12 03:36:52 2022
+++ src/lib/libc/stdio/vfwprintf.c	Sat Mar 12 12:31:39 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfwprintf.c,v 1.37 2022/03/12 08:36:52 nia Exp $	*/
+/*	$NetBSD: vfwprintf.c,v 1.38 2022/03/12 17:31:39 christos Exp $	*/
 
 /*-
  * Copyright (c) 1990, 1993
@@ -38,7 +38,7 @@
 static char sccsid[] = "@(#)vfprintf.c	8.1 (Berkeley) 6/4/93";
 __FBSDID("$FreeBSD: src/lib/libc/stdio/vfwprintf.c,v 1.27 2007/01/09 00:28:08 imp Exp $");
 #else
-__RCSID("$NetBSD: vfwprintf.c,v 1.37 2022/03/12 08:36:52 nia Exp $");
+__RCSID("$NetBSD: vfwprintf.c,v 1.38 2022/03/12 17:31:39 christos Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -460,10 +460,9 @@ __mbsconv(char *mbsarg, int prec, locale
 	 * wide characters for printing.
 	 */
 	convbuf = NULL;
-	if (reallocarr(&convbuf, insize + 1, sizeof(*convbuf)) != 0) {
-		errno = ENOMEM;
+	errno = reallocarr(&convbuf, insize + 1, sizeof(*convbuf));
+	if (errno)
 		return NULL;
-	}
 	wcp = convbuf;
 	p = mbsarg;
 	mbs = initial;
@@ -477,7 +476,9 @@ __mbsconv(char *mbsarg, int prec, locale
 		insize -= nconv;
 	}
 	if (nconv == (size_t)-1 || nconv == (size_t)-2) {
+		int serrno = errno;
 		free(convbuf);
+		errno = serrno;
 		return NULL;
 	}
 	*wcp = L'\0';
@@ -1979,16 +1980,17 @@ __grow_type_table (size_t nextarg, enum 
 		newsize = nextarg + 1;
 	if (oldsize == STATIC_ARG_TBL_SIZE) {
 		newtable = NULL;
-		if (reallocarr(&newtable, newsize, sizeof(*newtable)) != 0) {
-			errno = ENOMEM;
+		errno = reallocarr(&newtable, newsize, sizeof(*newtable));
+		if (errno)
 			return -1;
-		}
 		memcpy(newtable, oldtable, oldsize * sizeof(*newtable));
 	} else {
 		newtable = oldtable;
-		if (reallocarr(&newtable, newsize, sizeof(*newtable)) != 0) {
-			errno = ENOMEM;
+		errno = reallocarr(&newtable, newsize, sizeof(*newtable));
+		if (errno) {
+			int serrno = errno;
 			free(oldtable);
+			errno = serrno;
 			return -1;
 		}
 	}

Index: src/lib/libc/stdlib/_env.c
diff -u src/lib/libc/stdlib/_env.c:1.12 src/lib/libc/stdlib/_env.c:1.13
--- src/lib/libc/stdlib/_env.c:1.12	Sat Mar 12 03:44:38 2022
+++ src/lib/libc/stdlib/_env.c	Sat Mar 12 12:31:39 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: _env.c,v 1.12 2022/03/12 08:44:38 nia Exp $ */
+/*	$NetBSD: _env.c,v 1.13 2022/03/12 17:31:39 christos Exp $ */
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: _env.c,v 1.12 2022/03/12 08:44:38 nia Exp $");
+__RCSID("$NetBSD: _env.c,v 1.13 2022/03/12 17:31:39 christos Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -297,22 +297,20 @@ __getenvslot(const char *name, size_t l_
 	/* Allocate a new environment array. */
 	if (environ == allocated_environ) {
 		new_environ = environ;
-		if (reallocarr(&new_environ,
-		    new_size, sizeof(*new_environ)) != 0) {
-			errno = ENOMEM;
+		errno = reallocarr(&new_environ,
+		    new_size, sizeof(*new_environ));
+		if (errno)
 			return -1;
-		}
 	} else {
 		free(allocated_environ);
 		allocated_environ = NULL;
 		allocated_environ_size = 0;
 
 		new_environ = NULL;
-		if (reallocarr(&new_environ,
-		    new_size, sizeof(*new_environ)) != 0) {
-			errno = ENOMEM;
+		errno = reallocarr(&new_environ,
+		    new_size, sizeof(*new_environ));
+		if (errno)
 			return -1;
-		}
 		(void)memcpy(new_environ, environ,
 		    num_entries * sizeof(*new_environ));
 	}

Index: src/lib/libc/stdlib/hcreate.c
diff -u src/lib/libc/stdlib/hcreate.c:1.11 src/lib/libc/stdlib/hcreate.c:1.12
--- src/lib/libc/stdlib/hcreate.c:1.11	Sat Mar 12 03:26:01 2022
+++ src/lib/libc/stdlib/hcreate.c	Sat Mar 12 12:31:39 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: hcreate.c,v 1.11 2022/03/12 08:26:01 nia Exp $ */
+/* $NetBSD: hcreate.c,v 1.12 2022/03/12 17:31:39 christos Exp $ */
 
 /*
  * Copyright (c) 2001 Christopher G. Demetriou
@@ -43,7 +43,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: hcreate.c,v 1.11 2022/03/12 08:26:01 nia Exp $");
+__RCSID("$NetBSD: hcreate.c,v 1.12 2022/03/12 17:31:39 christos Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #if !defined(lint)
@@ -104,7 +104,6 @@ hcreate_r(size_t nel, struct hsearch_dat
 	struct internal_head *table;
 	size_t idx;
 	unsigned int p2;
-	void *p;
 
 	/* If nel is too small, make it min sized. */
 	if (nel < MIN_BUCKETS)
@@ -125,13 +124,10 @@ hcreate_r(size_t nel, struct hsearch_dat
 	/* Allocate the table. */
 	head->size = nel;
 	head->filled = 0;
-	p = NULL;
-	if (reallocarr(&p, nel, sizeof(table[0])) != 0) {
-		errno = ENOMEM;
+	errno = reallocarr(&table, nel, sizeof(*table));
+	if (errno)
 		return 0;
-	}
-	head->table = p;
-	table = p;
+	head->table = (void *)table;
 
 	/* Initialize it. */
 	for (idx = 0; idx < nel; idx++)

Index: src/lib/libc/stdlib/radixsort.c
diff -u src/lib/libc/stdlib/radixsort.c:1.21 src/lib/libc/stdlib/radixsort.c:1.22
--- src/lib/libc/stdlib/radixsort.c:1.21	Fri Oct 29 07:03:46 2021
+++ src/lib/libc/stdlib/radixsort.c	Sat Mar 12 12:31:39 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: radixsort.c,v 1.21 2021/10/29 11:03:46 nia Exp $	*/
+/*	$NetBSD: radixsort.c,v 1.22 2022/03/12 17:31:39 christos Exp $	*/
 
 /*-
  * Copyright (c) 1990, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)radixsort.c	8.2 (Berkeley) 4/28/95";
 #else
-__RCSID("$NetBSD: radixsort.c,v 1.21 2021/10/29 11:03:46 nia Exp $");
+__RCSID("$NetBSD: radixsort.c,v 1.22 2022/03/12 17:31:39 christos Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -130,10 +130,9 @@ sradixsort(const u_char **a, int n, cons
 		simplesort(a, n, 0, tr, endch);
 	else {
 		ta = NULL;
-		if (reallocarr(&ta, n, sizeof(a)) != 0) {
-			errno = ENOMEM;
-			return (-1);
-		}
+		errno = reallocarr(&ta, n, sizeof(*ta));
+		if (errno)
+			return -1;
 		r_sort_b(a, ta, n, 0, tr, endch);
 		free(ta);
 	}

Index: src/lib/libc/string/wcsdup.c
diff -u src/lib/libc/string/wcsdup.c:1.5 src/lib/libc/string/wcsdup.c:1.6
--- src/lib/libc/string/wcsdup.c:1.5	Fri Oct 29 07:03:46 2021
+++ src/lib/libc/string/wcsdup.c	Sat Mar 12 12:31:40 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: wcsdup.c,v 1.5 2021/10/29 11:03:46 nia Exp $	*/
+/*	$NetBSD: wcsdup.c,v 1.6 2022/03/12 17:31:40 christos Exp $	*/
 
 /*
  * Copyright (C) 2006 Aleksey Cheusov
@@ -14,7 +14,7 @@
 #include <sys/cdefs.h>
 
 #if defined(LIBC_SCCS) && !defined(lint) 
-__RCSID("$NetBSD: wcsdup.c,v 1.5 2021/10/29 11:03:46 nia Exp $"); 
+__RCSID("$NetBSD: wcsdup.c,v 1.6 2022/03/12 17:31:40 christos Exp $"); 
 #endif /* LIBC_SCCS and not lint */ 
 
 #include "namespace.h"
@@ -36,10 +36,9 @@ wcsdup(const wchar_t *str)
 	len = wcslen(str) + 1;
 
 	copy = NULL;
-	if (reallocarr(&copy, len, sizeof(wchar_t)) != 0) {
-		errno = ENOMEM;
+	errno = reallocarr(&copy, len, sizeof(*copy));
+	if (errno)
 		return NULL;
-	}
 
 	return wmemcpy(copy, str, len);
 }

Reply via email to