summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libc/stdlib/malloc/malloc.h5
-rw-r--r--libc/stdlib/malloc/malloc_debug.c15
2 files changed, 12 insertions, 8 deletions
diff --git a/libc/stdlib/malloc/malloc.h b/libc/stdlib/malloc/malloc.h
index 7fe8b6016..238bfb669 100644
--- a/libc/stdlib/malloc/malloc.h
+++ b/libc/stdlib/malloc/malloc.h
@@ -165,6 +165,9 @@ extern malloc_mutex_t __malloc_sbrk_lock;
when the variable __malloc_debug is set to true. */
#ifdef MALLOC_DEBUGGING
+/* The number of spaces in a malloc debug indent level. */
+#define MALLOC_DEBUG_INDENT_SIZE 3
+
extern int __malloc_debug, __malloc_check;
# define MALLOC_DEBUG(indent, fmt, args...) \
@@ -178,7 +181,7 @@ extern int __malloc_debug_cur_indent;
by a newline, and change the level by INDENT. */
extern void __malloc_debug_printf (int indent, const char *fmt, ...);
-/* Change the current debug print level by INDENT. */
+/* Change the current debug print level by INDENT, and return the value. */
#define __malloc_debug_indent(indent) (__malloc_debug_cur_indent += indent)
/* Set the current debug print level to LEVEL. */
diff --git a/libc/stdlib/malloc/malloc_debug.c b/libc/stdlib/malloc/malloc_debug.c
index 20a37f2f0..d231fa7b6 100644
--- a/libc/stdlib/malloc/malloc_debug.c
+++ b/libc/stdlib/malloc/malloc_debug.c
@@ -19,9 +19,7 @@
#include "malloc.h"
#include "heap.h"
-#ifdef MALLOC_DEBUGGING
int __malloc_debug = 0, __malloc_check = 0;
-#endif
#ifdef MALLOC_MMB_DEBUGGING
int __malloc_mmb_debug = 0;
@@ -36,11 +34,14 @@ int __malloc_debug_cur_indent = 0;
void
__malloc_debug_printf (int indent, const char *fmt, ...)
{
- int i;
+ unsigned spaces = __malloc_debug_cur_indent * MALLOC_DEBUG_INDENT_SIZE;
va_list val;
- for (i = 0; i < __malloc_debug_cur_indent; i++)
- fputs (" ", stderr);
+ while (spaces > 0)
+ {
+ putc (' ', stderr);
+ spaces--;
+ }
va_start (val, fmt);
vfprintf (stderr, fmt, val);
@@ -58,13 +59,13 @@ __malloc_debug_init (void)
if (ev)
{
int val = atoi (ev);
+
if (val & 1)
__malloc_check = 1;
-#ifdef MALLOC_DEBUGGING
if (val & 2)
__malloc_debug = 1;
-#endif
+
#ifdef MALLOC_MMB_DEBUGGING
if (val & 4)
__malloc_mmb_debug = 1;