char ptr[];
unsigned int sz;
{
- register char *mptr = realloc(ptr, sz);
+ register char *mptr;
+
+ if (!ptr) mptr = malloc(sz);
+ else mptr = realloc(ptr, sz);
if (sz && mptr == 0) No_Mem();
return mptr;
}
.PP
\fIRealloc\fR changes the size of
the block at \fIbuf\fR to \fIsize\fR bytes, and returns a pointer to the
-(possibly moved) block.
+(possibly moved) block. If \fIbuf\fP is a null pointer, \fIRealloc\fP
+behaves as \fIMalloc\fP.
.PP
\fISrealloc\fR reallocates
the string at \fIstr\fR to \fIsize\fR bytes.
{
register long *q = (long *) ptr;
+ while (n >= 8*sizeof (long)) {
+ /* high-speed clear loop */
+ *q++ = 0;
+ *q++ = 0;
+ *q++ = 0;
+ *q++ = 0;
+ *q++ = 0;
+ *q++ = 0;
+ *q++ = 0;
+ *q++ = 0;
+ n -= 8*sizeof (long);
+ }
while (n >= sizeof (long)) {
/* high-speed clear loop */
*q++ = 0;
*phead = (char *) (((_PALLOC_)p)->_A_next);
retval = p;
q = (long *) p;
+ while (size >= 8*sizeof(long)) {
+ *q++ = 0;
+ *q++ = 0;
+ *q++ = 0;
+ *q++ = 0;
+ *q++ = 0;
+ *q++ = 0;
+ *q++ = 0;
+ *q++ = 0;
+ size -= 8*sizeof(long);
+ }
while (size >= sizeof(long)) {
*q++ = 0;
size -= sizeof(long);