summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/libc/stdlib/malloc.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/lib/libc/stdlib/malloc.c b/src/lib/libc/stdlib/malloc.c
index 8ab9f355e9..bdc6ca69d3 100644
--- a/src/lib/libc/stdlib/malloc.c
+++ b/src/lib/libc/stdlib/malloc.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: malloc.c,v 1.136 2011/05/18 18:09:37 otto Exp $ */ 1/* $OpenBSD: malloc.c,v 1.137 2011/05/20 20:02:08 otto Exp $ */
2/* 2/*
3 * Copyright (c) 2008 Otto Moerbeek <otto@drijf.net> 3 * Copyright (c) 2008 Otto Moerbeek <otto@drijf.net>
4 * 4 *
@@ -236,6 +236,7 @@ wrterror(char *msg, void *p)
236 char *q = " error: "; 236 char *q = " error: ";
237 struct iovec iov[6]; 237 struct iovec iov[6];
238 char buf[20]; 238 char buf[20];
239 int saved_errno = errno;
239 240
240 iov[0].iov_base = __progname; 241 iov[0].iov_base = __progname;
241 iov[0].iov_len = strlen(__progname); 242 iov[0].iov_len = strlen(__progname);
@@ -260,7 +261,8 @@ wrterror(char *msg, void *p)
260 if (mopts.malloc_stats) 261 if (mopts.malloc_stats)
261 malloc_dump(STDERR_FILENO); 262 malloc_dump(STDERR_FILENO);
262#endif /* MALLOC_STATS */ 263#endif /* MALLOC_STATS */
263 //malloc_active--; 264
265 errno = saved_errno;
264 if (mopts.malloc_abort) 266 if (mopts.malloc_abort)
265 abort(); 267 abort();
266} 268}
@@ -1620,6 +1622,7 @@ malloc_dump(int fd)
1620 int i; 1622 int i;
1621 void *p; 1623 void *p;
1622 struct region_info *r; 1624 struct region_info *r;
1625 int saved_errno = errno;
1623 1626
1624 for (i = 0; i <= MALLOC_DELAYED_CHUNKS; i++) { 1627 for (i = 0; i <= MALLOC_DELAYED_CHUNKS; i++) {
1625 p = g_pool->delayed_chunks[i]; 1628 p = g_pool->delayed_chunks[i];
@@ -1634,6 +1637,7 @@ malloc_dump(int fd)
1634 /* XXX leak when run multiple times */ 1637 /* XXX leak when run multiple times */
1635 RB_INIT(&leakhead); 1638 RB_INIT(&leakhead);
1636 malloc_dump1(fd, g_pool); 1639 malloc_dump1(fd, g_pool);
1640 errno = saved_errno;
1637} 1641}
1638 1642
1639static void 1643static void