From 881fad86fa4942571c74cdfa89831a2cd25dbe16 Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Wed, 4 Oct 2017 15:59:32 +0200 Subject: evaluate: Fix debug output When introducing output_fp, debug output in src/evaluate.c was not adjusted and therefore broke. This patch restores eval debug output by applying the following changes: - Change erec_print() and erec_print_list() to take a struct output_ctx pointer as first argument and use output_fp field as destination to print to. - Drop octx_debug_dummy variable and instead use octx pointer from struct eval_ctx for debug output. - Add missing calls to erec_destroy() in eval debug output which should eliminate another mem leak. Fixes: 2535ba7006f22 ("src: get rid of printf") Signed-off-by: Phil Sutter Signed-off-by: Pablo Neira Ayuso --- src/erec.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/erec.c') diff --git a/src/erec.c b/src/erec.c index 174d1aeb..76fdeb86 100644 --- a/src/erec.c +++ b/src/erec.c @@ -69,7 +69,7 @@ void erec_add_location(struct error_record *erec, const struct location *loc) erec->num_locations++; } -static void erec_destroy(struct error_record *erec) +void erec_destroy(struct error_record *erec) { unsigned int i; @@ -112,7 +112,7 @@ struct error_record *erec_create(enum error_record_types type, return erec; } -void erec_print(FILE *f, const struct error_record *erec, +void erec_print(struct output_ctx *octx, const struct error_record *erec, unsigned int debug_mask) { const struct location *loc = erec->locations, *iloc; @@ -123,6 +123,10 @@ void erec_print(FILE *f, const struct error_record *erec, unsigned int i, end; int l, ret; off_t orig_offset = 0; + FILE *f = octx->output_fp; + + if (!f) + return; switch (indesc->type) { case INDESC_BUFFER: @@ -202,13 +206,14 @@ void erec_print(FILE *f, const struct error_record *erec, fprintf(f, "\n"); } -void erec_print_list(FILE *f, struct list_head *list, unsigned int debug_mask) +void erec_print_list(struct output_ctx *octx, struct list_head *list, + unsigned int debug_mask) { struct error_record *erec, *next; list_for_each_entry_safe(erec, next, list, list) { list_del(&erec->list); - erec_print(f, erec, debug_mask); + erec_print(octx, erec, debug_mask); erec_destroy(erec); } } -- cgit v1.2.3