diff options
| author | asou <> | 2023-09-09 06:52:40 +0000 | 
|---|---|---|
| committer | asou <> | 2023-09-09 06:52:40 +0000 | 
| commit | 6d1324dd796d24ee2d7d9d745f5b6502cc4f8a74 (patch) | |
| tree | a816d4bb12ebeb517a94b21c3199644a3c1d6fee /src/lib/libc/stdlib/malloc.c | |
| parent | 96c037c5593c620c415621f6cf17bcd1ddc106d6 (diff) | |
| download | openbsd-6d1324dd796d24ee2d7d9d745f5b6502cc4f8a74.tar.gz openbsd-6d1324dd796d24ee2d7d9d745f5b6502cc4f8a74.tar.bz2 openbsd-6d1324dd796d24ee2d7d9d745f5b6502cc4f8a74.zip | |
Print waring message when not allocated memory in putleakinfo().
ok otto.
Diffstat (limited to 'src/lib/libc/stdlib/malloc.c')
| -rw-r--r-- | src/lib/libc/stdlib/malloc.c | 22 | 
1 files changed, 20 insertions, 2 deletions
| diff --git a/src/lib/libc/stdlib/malloc.c b/src/lib/libc/stdlib/malloc.c index c09e1541e5..814a417145 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.289 2023/06/30 06:24:58 otto Exp $ */ | 1 | /* $OpenBSD: malloc.c,v 1.290 2023/09/09 06:52:40 asou Exp $ */ | 
| 2 | /* | 2 | /* | 
| 3 | * Copyright (c) 2008, 2010, 2011, 2016, 2023 Otto Moerbeek <otto@drijf.net> | 3 | * Copyright (c) 2008, 2010, 2011, 2016, 2023 Otto Moerbeek <otto@drijf.net> | 
| 4 | * Copyright (c) 2012 Matthew Dempsky <matthew@openbsd.org> | 4 | * Copyright (c) 2012 Matthew Dempsky <matthew@openbsd.org> | 
| @@ -2338,6 +2338,22 @@ RBT_PROTOTYPE(leaktree, leaknode, entry, leakcmp); | |||
| 2338 | RBT_GENERATE(leaktree, leaknode, entry, leakcmp); | 2338 | RBT_GENERATE(leaktree, leaknode, entry, leakcmp); | 
| 2339 | 2339 | ||
| 2340 | static void | 2340 | static void | 
| 2341 | wrtwarning(const char *func, char *msg, ...) | ||
| 2342 | { | ||
| 2343 | int saved_errno = errno; | ||
| 2344 | va_list ap; | ||
| 2345 | |||
| 2346 | dprintf(STDERR_FILENO, "%s(%d) in %s(): ", __progname, | ||
| 2347 | getpid(), func != NULL ? func : "unknown"); | ||
| 2348 | va_start(ap, msg); | ||
| 2349 | vdprintf(STDERR_FILENO, msg, ap); | ||
| 2350 | va_end(ap); | ||
| 2351 | dprintf(STDERR_FILENO, "\n"); | ||
| 2352 | |||
| 2353 | errno = saved_errno; | ||
| 2354 | } | ||
| 2355 | |||
| 2356 | static void | ||
| 2341 | putleakinfo(struct leaktree *leaks, void *f, size_t sz, int cnt) | 2357 | putleakinfo(struct leaktree *leaks, void *f, size_t sz, int cnt) | 
| 2342 | { | 2358 | { | 
| 2343 | struct leaknode key, *p; | 2359 | struct leaknode key, *p; | 
| @@ -2353,8 +2369,10 @@ putleakinfo(struct leaktree *leaks, void *f, size_t sz, int cnt) | |||
| 2353 | if (page == NULL || | 2369 | if (page == NULL || | 
| 2354 | used >= MALLOC_PAGESIZE / sizeof(struct leaknode)) { | 2370 | used >= MALLOC_PAGESIZE / sizeof(struct leaknode)) { | 
| 2355 | page = MMAP(MALLOC_PAGESIZE, 0); | 2371 | page = MMAP(MALLOC_PAGESIZE, 0); | 
| 2356 | if (page == MAP_FAILED) | 2372 | if (page == MAP_FAILED) { | 
| 2373 | wrtwarning(__func__, strerror(errno)); | ||
| 2357 | return; | 2374 | return; | 
| 2375 | } | ||
| 2358 | used = 0; | 2376 | used = 0; | 
| 2359 | } | 2377 | } | 
| 2360 | p = &page[used++]; | 2378 | p = &page[used++]; | 
