From cf9d67e3e8aa596271353f56c49dbe6ebbe3f7ad Mon Sep 17 00:00:00 2001 From: Brendan Kehoe Date: Fri, 31 Oct 1997 23:17:35 +0000 Subject: except.c (push_eh_info): Pass the number of fields - 1 down, not the exact number of fields. * except.c (push_eh_info): Pass the number of fields - 1 down, not the exact number of fields. cuz in finish_builtin_type, its comment sez LEN is the number of elements in FIELDS minus one, or put another way, it is the maximum subscript used in FIELDS. and its code does for (i = 0; i < len; i++) { layout_type (TREE_TYPE (fields[i])); DECL_FIELD_CONTEXT (fields[i]) = type; TREE_CHAIN (fields[i]) = fields[i+1]; } DECL_FIELD_CONTEXT (fields[i]) = type; DECL_CLASS_CONTEXT (fields[i]) = type; thus expecting the final ones to be fields[4], not fields[5] (which is the actual size from 0, not the last field member) From-SVN: r16257 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/except.c | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 5ff066a..78df28f 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +1997-10-31 Brendan Kehoe + + * except.c (push_eh_info): Pass the number of fields - 1 down, not + the exact number of fields. + Fri Oct 31 01:47:57 1997 Jason Merrill Support for nested exceptions. diff --git a/gcc/cp/except.c b/gcc/cp/except.c index 4d3622b..cb59774 100644 --- a/gcc/cp/except.c +++ b/gcc/cp/except.c @@ -342,7 +342,9 @@ push_eh_info () boolean_type_node); fields[4] = build_lang_field_decl (FIELD_DECL, get_identifier ("next"), build_pointer_type (t)); - finish_builtin_type (t, "cp_eh_info", fields, 5, ptr_type_node); + /* N.B.: The fourth field LEN is expected to be + the number of fields - 1, not the total number of fields. */ + finish_builtin_type (t, "cp_eh_info", fields, 4, ptr_type_node); t = build_pointer_type (t); /* And now the function. */ -- cgit v1.1