From: Brendan Kehoe Date: Fri, 31 Oct 1997 23:17:35 +0000 (+0000) Subject: except.c (push_eh_info): Pass the number of fields - 1 down, not the exact number... X-Git-Tag: releases/egcs-1.0.0~191 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cf9d67e3e8aa596271353f56c49dbe6ebbe3f7ad;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 5ff066ab51bc..78df28f00150 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 4d3622bde90f..cb59774728ac 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. */