From: Jason Merrill Date: Mon, 10 Mar 2003 22:11:08 +0000 (-0500) Subject: re PR c++/9798 (Infinite recursion (segfault) in cp/decl.c:push_using_directive with... X-Git-Tag: releases/gcc-3.2.3~130 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1122c73cfa33c7f70d9630da3598125ccab5f349;p=thirdparty%2Fgcc.git re PR c++/9798 (Infinite recursion (segfault) in cp/decl.c:push_using_directive with recusive using directives) PR c++/9798 * decl.c (push_using_directive): Push before recursing. From-SVN: r64135 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 6c0c6ef21c2c..ea552bbe7cbd 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2003-03-10 Jason Merrill + + PR c++/9798 + * decl.c (push_using_directive): Push before recursing. + 2003-02-24 Kriang Lerdsuwanakij PR c++/9602 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index cbb87184eda3..3e23c8aeecee 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -4539,14 +4539,15 @@ push_using_directive (used) if (purpose_member (used, ud) != NULL_TREE) return NULL_TREE; - /* Recursively add all namespaces used. */ - for (iter = DECL_NAMESPACE_USING (used); iter; iter = TREE_CHAIN (iter)) - push_using_directive (TREE_PURPOSE (iter)); - ancestor = namespace_ancestor (current_decl_namespace (), used); ud = current_binding_level->using_directives; ud = tree_cons (used, ancestor, ud); current_binding_level->using_directives = ud; + + /* Recursively add all namespaces used. */ + for (iter = DECL_NAMESPACE_USING (used); iter; iter = TREE_CHAIN (iter)) + push_using_directive (TREE_PURPOSE (iter)); + return ud; }