Added high-speed clear loops and changed behaviour of Realloc
This commit is contained in:
parent
8265d3f731
commit
1aef1c5921
|
@ -17,7 +17,10 @@ Realloc(ptr, sz)
|
|||
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;
|
||||
}
|
||||
|
|
|
@ -56,7 +56,8 @@ bytes, initialized with the null-terminated string \fIstr\fR.
|
|||
.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.
|
||||
|
|
|
@ -13,6 +13,18 @@ clear(ptr, n)
|
|||
{
|
||||
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;
|
||||
|
|
|
@ -37,6 +37,17 @@ st_alloc(phead, size, count)
|
|||
*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);
|
||||
|
|
Loading…
Reference in a new issue