From 9b23e71a6b41cd11b39ab1e1d18c140eaf63c3e7 Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Tue, 28 Feb 2017 09:40:01 +0100 Subject: gpgscm: Track source locations in every kind of ports. * tests/gpgscm/scheme-private.h (struct port): Move location information out of the union. * tests/gpgscm/scheme.c (mark): All ports need marking now. (gc): Likewise all ports on the load stack. (port_clear_location): Adapt accordingly. Also, add an empty function for !SHOW_ERROR_LINE. (port_increment_current_line): Likewise. (port_reset_current_line): Drop function in favor of... (port_init_location): ... this new function. (file_push): Simplify. (file_pop): Likewise. (port_rep_from_filename): Likewise. (port_rep_from_file): Likewise. (port_rep_from_string): Also initialize the location. (port_rep_from_scratch): Likewise. (port_close): Simplify and generalize. (skipspace): Likewise. (token): Likewise. (_Error_1): Generalize. (opexe_5): Likewise. (scheme_deinit): Simplify and generalize. (scheme_load_named_file): Likewise. (scheme_load_string): Also initialize the location. -- This change tracks the location of source code loaded from non-file ports that is used in error messages. It also simplifies the code quite a bit. Signed-off-by: Justus Winter --- scheme-private.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'scheme-private.h') diff --git a/scheme-private.h b/scheme-private.h index ad8f571..abd89e8 100644 --- a/scheme-private.h +++ b/scheme-private.h @@ -27,10 +27,6 @@ typedef struct port { struct { FILE *file; int closeit; -#if SHOW_ERROR_LINE - pointer curr_line; - pointer filename; -#endif } stdio; struct { char *start; @@ -38,6 +34,10 @@ typedef struct port { char *curr; } string; } rep; +#if SHOW_ERROR_LINE + pointer curr_line; + pointer filename; +#endif } port; /* cell structure */ -- cgit v1.2.3