From 0311118f963f06d557d4e016d724bd0b44b31c53 Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Sun, 11 Jan 2009 21:39:02 +0000 Subject: [PATCH] * f-typeprint.c (f_type_print_varspec_suffix): Convert the autovariable arrayprint_recurse_level to a parameter. Update all the callers. New comment at autovariables. --- gdb/ChangeLog | 6 ++++++ gdb/f-typeprint.c | 23 ++++++++++++++--------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 346f67df8c..b2de10b846 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2009-01-11 Jan Kratochvil + + * f-typeprint.c (f_type_print_varspec_suffix): Convert the autovariable + arrayprint_recurse_level to a parameter. Update all the callers. New + comment at autovariables. + 2009-01-11 Jan Kratochvil * gdbtypes.c (make_qualified_type, replace_type): Reformat to the GNU diff --git a/gdb/f-typeprint.c b/gdb/f-typeprint.c index f5c10ab342..6c9668f00e 100644 --- a/gdb/f-typeprint.c +++ b/gdb/f-typeprint.c @@ -39,7 +39,7 @@ static void f_type_print_args (struct type *, struct ui_file *); #endif -static void f_type_print_varspec_suffix (struct type *, struct ui_file *, +static void f_type_print_varspec_suffix (struct type *, struct ui_file *, int, int, int, int); void f_type_print_varspec_prefix (struct type *, struct ui_file *, @@ -80,7 +80,7 @@ f_print_type (struct type *type, char *varstring, struct ui_file *stream, so don't print an additional pair of ()'s */ demangled_args = varstring[strlen (varstring) - 1] == ')'; - f_type_print_varspec_suffix (type, stream, show, 0, demangled_args); + f_type_print_varspec_suffix (type, stream, show, 0, demangled_args, 0); } } @@ -150,11 +150,13 @@ f_type_print_varspec_prefix (struct type *type, struct ui_file *stream, static void f_type_print_varspec_suffix (struct type *type, struct ui_file *stream, - int show, int passed_a_ptr, int demangled_args) + int show, int passed_a_ptr, int demangled_args, + int arrayprint_recurse_level) { int upper_bound, lower_bound; - static int arrayprint_recurse_level = 0; int retcode; + /* No static variables are permitted as an error call may occur during + execution of this function. */ if (type == 0) return; @@ -173,7 +175,8 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream, fprintf_filtered (stream, "("); if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_ARRAY) - f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 0, 0); + f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 0, 0, + arrayprint_recurse_level); lower_bound = f77_get_lowerbound (type); if (lower_bound != 1) /* Not the default. */ @@ -191,7 +194,8 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream, } if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_ARRAY) - f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 0, 0); + f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 0, 0, + arrayprint_recurse_level); if (arrayprint_recurse_level == 1) fprintf_filtered (stream, ")"); else @@ -201,13 +205,14 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream, case TYPE_CODE_PTR: case TYPE_CODE_REF: - f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 1, 0); + f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 1, 0, + arrayprint_recurse_level); fprintf_filtered (stream, ")"); break; case TYPE_CODE_FUNC: f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, - passed_a_ptr, 0); + passed_a_ptr, 0, arrayprint_recurse_level); if (passed_a_ptr) fprintf_filtered (stream, ")"); @@ -361,7 +366,7 @@ f_type_print_base (struct type *type, struct ui_file *stream, int show, fputs_filtered (" :: ", stream); fputs_filtered (TYPE_FIELD_NAME (type, index), stream); f_type_print_varspec_suffix (TYPE_FIELD_TYPE (type, index), - stream, 0, 0, 0); + stream, 0, 0, 0, 0); fputs_filtered ("\n", stream); } fprintfi_filtered (level, stream, "End Type "); -- 2.34.1