From ffe255b79c1e8a69e27936e1c37d01b6661908a0 Mon Sep 17 00:00:00 2001 From: John Kerl Date: Tue, 22 Dec 2015 22:26:06 -0500 Subject: [PATCH] valgrind findings --- c/mapping/mapper_bar.c | 1 + c/mapping/mapper_check.c | 3 ++- c/tools/clean-valgrind-output | 22 ++++++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100755 c/tools/clean-valgrind-output diff --git a/c/mapping/mapper_bar.c b/c/mapping/mapper_bar.c index d17a20a4d..4f4e0dc71 100644 --- a/c/mapping/mapper_bar.c +++ b/c/mapping/mapper_bar.c @@ -176,6 +176,7 @@ static void mapper_bar_free(void* pvstate) { free(pstate->bars[i]); free(pstate->bars); ap_free(pstate->pargp); + free(pstate); } // ---------------------------------------------------------------- diff --git a/c/mapping/mapper_check.c b/c/mapping/mapper_check.c index 86f8fda12..2b95707e9 100644 --- a/c/mapping/mapper_check.c +++ b/c/mapping/mapper_check.c @@ -34,13 +34,14 @@ static mapper_t* mapper_check_parse_cli(int* pargi, int argc, char** argv) { // ---------------------------------------------------------------- static mapper_t* mapper_check_alloc() { - mapper_t* pmapper = mlr_malloc_or_die(sizeof(mapper_t)); + mapper_t* pmapper = mlr_malloc_or_die(sizeof(mapper_t)); pmapper->pvstate = NULL; pmapper->pprocess_func = mapper_check_process; pmapper->pfree_func = mapper_check_free; return pmapper; } static void mapper_check_free(void* pvstate) { + free(pvstate); } // ---------------------------------------------------------------- diff --git a/c/tools/clean-valgrind-output b/c/tools/clean-valgrind-output new file mode 100755 index 000000000..61a029fcb --- /dev/null +++ b/c/tools/clean-valgrind-output @@ -0,0 +1,22 @@ +#!/bin/bash + +# E.g. for filtering the output of reg_test/run --valgrind. +# This just strips out some false positives, e.g. system-level stuff not +# relevant to Miller itself. mgrepv is at +# https://github.com/johnkerl/scripts/blob/master/fundam/mgrepv + +sed 's/^==.*== //' "$@" | swipe \ + | mgrepv dyld \ + | mgrepv copySwiftV1MangledName \ + | mgrepv 'LEAK SUMMARY' \ + | mgrepv 'HEAP SUMMARY' \ + | mgrepv 'UNKNOWN fcntl' \ + | grep -v 'ERROR SUMMARY' \ + | grep -v 'Memcheck,' \ + | grep -v 'Copyright' \ + | grep -v 'Using Valgrind' \ + | grep -v 'For counts of' \ + | mgrepv 'mlr_try_float_from_string' \ + | cat + + #| mgrepv 'parse_command_line'