summaryrefslogtreecommitdiff
path: root/sunrpc/xdr_array.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2004-12-22 20:10:10 +0000
committerUlrich Drepper <drepper@redhat.com>2004-12-22 20:10:10 +0000
commita334319f6530564d22e775935d9c91663623a1b4 (patch)
treeb5877475619e4c938e98757d518bb1e9cbead751 /sunrpc/xdr_array.c
parent0ecb606cb6cf65de1d9fc8a919bceb4be476c602 (diff)
(CFLAGS-tst-align.c): Add -mpreferred-stack-boundary=4.
Diffstat (limited to 'sunrpc/xdr_array.c')
-rw-r--r--sunrpc/xdr_array.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/sunrpc/xdr_array.c b/sunrpc/xdr_array.c
index 44abdbcfda..9f67e7fe62 100644
--- a/sunrpc/xdr_array.c
+++ b/sunrpc/xdr_array.c
@@ -74,6 +74,7 @@ xdr_array (xdrs, addrp, sizep, maxsize, elsize, elproc)
caddr_t target = *addrp;
u_int c; /* the actual element count */
bool_t stat = TRUE;
+ u_int nodesize;
/* like strings, arrays are really counted arrays */
if (!INTUSE(xdr_u_int) (xdrs, sizep))
@@ -89,6 +90,7 @@ xdr_array (xdrs, addrp, sizep, maxsize, elsize, elproc)
{
return FALSE;
}
+ nodesize = c * elsize;
/*
* if we are deserializing, we may need to allocate an array.
@@ -100,12 +102,19 @@ xdr_array (xdrs, addrp, sizep, maxsize, elsize, elproc)
case XDR_DECODE:
if (c == 0)
return TRUE;
- *addrp = target = calloc (c, elsize);
+ *addrp = target = mem_alloc (nodesize);
if (target == NULL)
{
- (void) __fxprintf (NULL, "%s", _("xdr_array: out of memory\n"));
+#ifdef USE_IN_LIBIO
+ if (_IO_fwide (stderr, 0) > 0)
+ (void) __fwprintf (stderr, L"%s",
+ _("xdr_array: out of memory\n"));
+ else
+#endif
+ (void) fputs (_("xdr_array: out of memory\n"), stderr);
return FALSE;
}
+ __bzero (target, nodesize);
break;
case XDR_FREE:
@@ -128,7 +137,7 @@ xdr_array (xdrs, addrp, sizep, maxsize, elsize, elproc)
*/
if (xdrs->x_op == XDR_FREE)
{
- mem_free (*addrp, c * elsize);
+ mem_free (*addrp, nodesize);
*addrp = NULL;
}
return stat;