#include <string.h>
void *
-recalloc(void * old, unsigned nOld, unsigned nNew, unsigned itemSize)
+recalloc(void *ptr, size_t old_size, size_t new_size)
{
char *rtrn;
- if (old == NULL)
- rtrn = calloc(nNew, itemSize);
- else
- {
- rtrn = realloc(old, nNew * itemSize);
- if ((rtrn) && (nNew > nOld))
- {
- memset(&rtrn[nOld * itemSize], 0, (nNew - nOld) * itemSize);
- }
- }
+ if (ptr == NULL)
+ return calloc(1, new_size);
+
+ rtrn = realloc(ptr, new_size);
+ if (rtrn && new_size > old_size)
+ memset(&rtrn[old_size], 0, new_size - old_size);
+
return rtrn;
}
#endif
extern void *
-recalloc(void * old, unsigned nOld, unsigned nNew, unsigned newSize);
+recalloc(void *ptr, size_t old_size, size_t new_size);
#define uTypedAlloc(t) ((t *)malloc((unsigned)sizeof(t)))
#define uTypedCalloc(n,t) ((t *)calloc((unsigned)n,(unsigned)sizeof(t)))
#define uTypedRealloc(pO,n,t) ((t *)realloc(pO,((unsigned)n)*sizeof(t)))
-#define uTypedRecalloc(pO,o,n,t) ((t *)recalloc(pO,((unsigned)o),((unsigned)n),sizeof(t)))
+#define uTypedRecalloc(pO, o, n, t) recalloc(pO, (o) * sizeof(t), (n) * sizeof(t))
/***====================================================================***/