path: root/src/erec.c
diff options
authorPhil Sutter <>2017-10-04 15:59:32 +0200
committerPablo Neira Ayuso <>2017-10-06 14:30:56 +0200
commit881fad86fa4942571c74cdfa89831a2cd25dbe16 (patch)
tree8ddd4a0fde3e6306ad63884c691f02641b1dd255 /src/erec.c
parentb873a1731d2481851c57eab3dcf3e719e9d45b50 (diff)
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 <>
Diffstat (limited to 'src/erec.c')
1 files changed, 9 insertions, 4 deletions
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)
-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) {
@@ -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) {
- erec_print(f, erec, debug_mask);
+ erec_print(octx, erec, debug_mask);