.
[kopensolaris-gnu/glibc.git] / sunrpc / xdr_sizeof.c
index e999e0e..aaf25e9 100644 (file)
@@ -70,22 +70,18 @@ x_setpostn (XDR *xdrs, u_int len)
   return FALSE;
 }
 
-static long *
-x_inline (XDR *xdrs, int len)
+static int32_t *
+x_inline (XDR *xdrs, u_int len)
 {
   if (len == 0)
-    {
-      return NULL;
-    }
+    return NULL;
   if (xdrs->x_op != XDR_ENCODE)
-    {
-      return NULL;
-    }
-  if (len < (int) xdrs->x_base)
+    return NULL;
+  if (len < (u_int) (long int) xdrs->x_base)
     {
       /* x_private was already allocated */
       xdrs->x_handy += len;
-      return (long *) xdrs->x_private;
+      return (int32_t *) xdrs->x_private;
     }
   else
     {
@@ -97,9 +93,9 @@ x_inline (XDR *xdrs, int len)
          xdrs->x_base = 0;
          return NULL;
        }
-      xdrs->x_base = (caddr_t) len;
+      xdrs->x_base = (void *) (long) len;
       xdrs->x_handy += len;
-      return (long *) xdrs->x_private;
+      return (int32_t *) xdrs->x_private;
     }
 }
 
@@ -163,5 +159,5 @@ xdr_sizeof (xdrproc_t func, void *data)
   stat = func (&x, data);
   if (x.x_private)
     free (x.x_private);
-  return stat == TRUE ? (unsigned) x.x_handy : 0;
+  return stat == TRUE ? x.x_handy : 0;
 }