From 2360c81be6b47d73bf9d2d1f1449a3bda995e711 Mon Sep 17 00:00:00 2001
From: Andrew Haley <aph@redhat.com>
Date: Fri, 3 Dec 2004 18:11:21 +0000
Subject: [PATCH] re PR java/18812 (ICE in
 catalina/common/lib/naming-resources.jar)

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.

From-SVN: r91690
---
 gcc/java/ChangeLog | 6 ++++++
 gcc/java/except.c  | 8 +++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 352177038094..9b8516051107 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,9 @@
+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 
diff --git a/gcc/java/except.c b/gcc/java/except.c
index 9ef549b3d205..6735b598311b 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;
     }
 
-- 
GitLab