summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>2004-12-03 18:11:21 +0000
committeraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>2004-12-03 18:11:21 +0000
commit2668ecc8ce78c9e8d1fb7797419a97d28f9811f9 (patch)
tree155aaad672e282cdcabefae2f83b904cc9a89d2c
parent574006f0959873db8527978db18f8433d510c487 (diff)
downloadgcc-2668ecc8ce78c9e8d1fb7797419a97d28f9811f9.tar.gz
2004-12-03 Andrew Haley <aph@redhat.com>
PR java/18812 * except.c (link_handler): Patch 'outer' field of siblings of the range we're demoting. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91690 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/java/ChangeLog6
-rw-r--r--gcc/java/except.c8
2 files changed, 13 insertions, 1 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 35217703809..9b851605110 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,5 +1,11 @@
2004-12-03 Andrew Haley <aph@redhat.com>
+ PR java/18812
+ * except.c (link_handler): Patch 'outer' field of siblings of the
+ range we're demoting.
+
+2004-12-03 Andrew Haley <aph@redhat.com>
+
PR java/18697
* class.c (layout_class_method): Don't fail to override a method
simply because it has DECL_ARTIFICIAL set.
diff --git a/gcc/java/except.c b/gcc/java/except.c
index 9ef549b3d20..6735b598311 100644
--- a/gcc/java/except.c
+++ b/gcc/java/except.c
@@ -138,12 +138,18 @@ link_handler (struct eh_range *range, struct eh_range *outer)
range->next_sibling = NULL;
range->first_child = outer;
{
+ struct eh_range *p = outer;
struct eh_range **pr = &(outer->outer->first_child);
while (*pr != outer)
pr = &(*pr)->next_sibling;
*pr = range;
+
+ while (p)
+ {
+ p->outer = range;
+ p = p->next_sibling;
+ }
}
- outer->outer = range;
return;
}