Commit 1ff24749 by Eric Botcazou Committed by Eric Botcazou

re PR middle-end/49732 (crash on terminal_interface-curses-menus.adb from ncurses with -gnato)

	PR middle-end/49732
	* tree.c (walk_tree_1) <DECL_EXPR>: Do not walk a pointed-to type.

From-SVN: r176371
parent 73cd74f8
2011-07-17 Eric Botcazou <ebotcazou@adacore.com>
PR middle-end/49732
* tree.c (walk_tree_1) <DECL_EXPR>: Do not walk a pointed-to type.
2011-07-16 Matthias Klose <doko@ubuntu.com>
* doc/install.texi: Document --enable-static-libjava.
......
2011-07-17 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/pointer_controlled.adb: New test.
2011-07-17 Tobias Burnus <burnus@net-b.de>
PR fortran/49624
......
-- PR ada/49732
-- Testcase by Vorfeed Canal
-- { dg-do compile }
-- { dg-options "-gnato" }
with Interfaces.C; use Interfaces.C;
with Interfaces.C.Strings; use Interfaces.C.Strings;
with Interfaces.C.Pointers;
procedure Pointer_Controlled is
function Create (Name : String) return size_t is
type Name_String is new char_array (0 .. Name'Length);
type Name_String_Ptr is access Name_String;
pragma Controlled (Name_String_Ptr);
Name_Str : constant Name_String_Ptr := new Name_String;
Name_Len : size_t;
begin
To_C (Name, Name_Str.all, Name_Len);
return 1;
end;
Test : size_t;
begin
Test := Create("ABC");
end;
......@@ -10596,9 +10596,14 @@ walk_tree_1 (tree *tp, walk_tree_fn func, void *data,
if (result || !walk_subtrees)
return result;
result = walk_type_fields (*type_p, func, data, pset, lh);
if (result)
return result;
/* But do not walk a pointed-to type since it may itself need to
be walked in the declaration case if it isn't anonymous. */
if (!POINTER_TYPE_P (*type_p))
{
result = walk_type_fields (*type_p, func, data, pset, lh);
if (result)
return result;
}
/* If this is a record type, also walk the fields. */
if (RECORD_OR_UNION_TYPE_P (*type_p))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment