From bc655b7fd0fa70213e28695540f4e43da933bb60 Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Sun, 11 Jan 2009 21:39:02 +0000 Subject: * 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/f-typeprint.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'gdb/f-typeprint.c') diff --git a/gdb/f-typeprint.c b/gdb/f-typeprint.c index f5c10ab342a..6c9668f00e2 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 "); -- cgit v1.2.1