summaryrefslogtreecommitdiff
path: root/lib/libc/stdlib/malloc.c
diff options
context:
space:
mode:
authorAkinori MUSHA <knu@FreeBSD.org>2001-12-29 08:10:14 +0000
committerAkinori MUSHA <knu@FreeBSD.org>2001-12-29 08:10:14 +0000
commit2316c86bd03354712fc909b1012e4f1ad5e1e191 (patch)
tree2d5425b9e53ab0986dd5ac13c9966c3ec5ab0617 /lib/libc/stdlib/malloc.c
parente4db96e3b8a406b93618c5c1fd8be40b1e986457 (diff)
Notes
Diffstat (limited to 'lib/libc/stdlib/malloc.c')
-rw-r--r--lib/libc/stdlib/malloc.c53
1 files changed, 29 insertions, 24 deletions
diff --git a/lib/libc/stdlib/malloc.c b/lib/libc/stdlib/malloc.c
index 6482b4570122..bf2b1329a88a 100644
--- a/lib/libc/stdlib/malloc.c
+++ b/lib/libc/stdlib/malloc.c
@@ -458,7 +458,7 @@ malloc_init ()
page_dir = (struct pginfo **) MMAP(malloc_pagesize);
if (page_dir == (struct pginfo **) -1)
- wrterror("mmap(2) failed, check limits.\n");
+ wrterror("mmap(2) failed, check limits\n");
/*
* We need a maximum of malloc_pageshift buckets, steal these from the
@@ -739,12 +739,12 @@ irealloc(void *ptr, size_t size)
index = ptr2index(ptr);
if (index < malloc_pageshift) {
- wrtwarning("junk pointer, too low to make sense.\n");
+ wrtwarning("junk pointer, too low to make sense\n");
return 0;
}
if (index > last_index) {
- wrtwarning("junk pointer, too high to make sense.\n");
+ wrtwarning("junk pointer, too high to make sense\n");
return 0;
}
@@ -754,7 +754,7 @@ irealloc(void *ptr, size_t size)
/* Check the pointer */
if ((u_long)ptr & malloc_pagemask) {
- wrtwarning("modified (page-) pointer.\n");
+ wrtwarning("modified (page-) pointer\n");
return 0;
}
@@ -772,7 +772,7 @@ irealloc(void *ptr, size_t size)
/* Check the pointer for sane values */
if (((u_long)ptr & ((*mp)->size-1))) {
- wrtwarning("modified (chunk-) pointer.\n");
+ wrtwarning("modified (chunk-) pointer\n");
return 0;
}
@@ -781,7 +781,7 @@ irealloc(void *ptr, size_t size)
/* Verify that it isn't a free chunk already */
if ((*mp)->bits[i/MALLOC_BITS] & (1<<(i%MALLOC_BITS))) {
- wrtwarning("chunk is already free.\n");
+ wrtwarning("chunk is already free\n");
return 0;
}
@@ -795,7 +795,7 @@ irealloc(void *ptr, size_t size)
}
} else {
- wrtwarning("pointer to wrong page.\n");
+ wrtwarning("pointer to wrong page\n");
return 0;
}
@@ -827,17 +827,17 @@ free_pages(void *ptr, u_long index, struct pginfo *info)
void *tail;
if (info == MALLOC_FREE) {
- wrtwarning("page is already free.\n");
+ wrtwarning("page is already free\n");
return;
}
if (info != MALLOC_FIRST) {
- wrtwarning("pointer to wrong page.\n");
+ wrtwarning("pointer to wrong page\n");
return;
}
if ((u_long)ptr & malloc_pagemask) {
- wrtwarning("modified (page-) pointer.\n");
+ wrtwarning("modified (page-) pointer\n");
return;
}
@@ -912,7 +912,7 @@ free_pages(void *ptr, u_long index, struct pginfo *info)
pf = px;
px = 0;
} else {
- wrterror("freelist is destroyed.\n");
+ wrterror("freelist is destroyed\n");
}
}
@@ -959,12 +959,12 @@ free_bytes(void *ptr, u_long index, struct pginfo *info)
i = ((u_long)ptr & malloc_pagemask) >> info->shift;
if (((u_long)ptr & (info->size-1))) {
- wrtwarning("modified (chunk-) pointer.\n");
+ wrtwarning("modified (chunk-) pointer\n");
return;
}
if (info->bits[i/MALLOC_BITS] & (1<<(i%MALLOC_BITS))) {
- wrtwarning("chunk is already free.\n");
+ wrtwarning("chunk is already free\n");
return;
}
@@ -1021,7 +1021,7 @@ ifree(void *ptr)
return;
if (!malloc_started) {
- wrtwarning("malloc() has never been called.\n");
+ wrtwarning("malloc() has never been called\n");
return;
}
@@ -1032,12 +1032,12 @@ ifree(void *ptr)
index = ptr2index(ptr);
if (index < malloc_pageshift) {
- wrtwarning("junk pointer, too low to make sense.\n");
+ wrtwarning("junk pointer, too low to make sense\n");
return;
}
if (index > last_index) {
- wrtwarning("junk pointer, too high to make sense.\n");
+ wrtwarning("junk pointer, too high to make sense\n");
return;
}
@@ -1063,7 +1063,7 @@ malloc(size_t size)
THREAD_LOCK();
malloc_func = " in malloc():";
if (malloc_active++) {
- wrtwarning("recursive call.\n");
+ wrtwarning("recursive call\n");
malloc_active--;
THREAD_UNLOCK();
return (0);
@@ -1078,7 +1078,7 @@ malloc(size_t size)
malloc_active--;
THREAD_UNLOCK();
if (malloc_xmalloc && !r)
- wrterror("out of memory.\n");
+ wrterror("out of memory\n");
return (r);
}
@@ -1088,8 +1088,9 @@ free(void *ptr)
THREAD_LOCK();
malloc_func = " in free():";
if (malloc_active++) {
- wrtwarning("recursive call.\n");
+ wrtwarning("recursive call\n");
malloc_active--;
+ THREAD_UNLOCK();
return;
} else {
ifree(ptr);
@@ -1103,17 +1104,19 @@ free(void *ptr)
void *
realloc(void *ptr, size_t size)
{
- register void *r;
+ void *r;
+ int err = 0;
THREAD_LOCK();
malloc_func = " in realloc():";
if (malloc_active++) {
- wrtwarning("recursive call.\n");
+ wrtwarning("recursive call\n");
malloc_active--;
+ THREAD_UNLOCK();
return (0);
}
if (ptr && !malloc_started) {
- wrtwarning("malloc() has never been called.\n");
+ wrtwarning("malloc() has never been called\n");
ptr = 0;
}
if (!malloc_started)
@@ -1123,14 +1126,16 @@ realloc(void *ptr, size_t size)
r = 0;
} else if (!ptr) {
r = imalloc(size);
+ err = (r == NULL);
} else {
r = irealloc(ptr, size);
+ err = (r == NULL);
}
UTRACE(ptr, size, r);
malloc_active--;
THREAD_UNLOCK();
- if (malloc_xmalloc && !r)
- wrterror("out of memory.\n");
+ if (malloc_xmalloc && err)
+ wrterror("out of memory\n");
return (r);
}