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(©, len, sizeof(wchar_t)) != 0) {
- errno = ENOMEM;
+ errno = reallocarr(©, len, sizeof(*copy));
+ if (errno)
return NULL;
- }
return wmemcpy(copy, str, len);
}