This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 4/4] [lambda] [polymorphic] [HACK] Avoid crash on symbol table writing when generic lambda declared with iostream (or potentially other code) included.


---
 gcc/symtab.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/gcc/symtab.c b/gcc/symtab.c
index 85d47a8..1ada0f7 100644
--- a/gcc/symtab.c
+++ b/gcc/symtab.c
@@ -116,6 +116,15 @@ insert_to_assembler_name_hash (symtab_node node, bool with_clones)
 
       tree name = DECL_ASSEMBLER_NAME (node->symbol.decl);
 
+
+      // FIXME: how does this nullptr get here when declaring a C++
+      // FIXME: generic lambda and including iostream (or presumably
+      // FIXME: any other header with whatever property is triggering
+      // FIXME: this)!?
+      //
+      if (name == 0)
+	return;
+
       aslot = htab_find_slot_with_hash (assembler_name_hash, name,
 					decl_assembler_name_hash (name),
 					INSERT);
@@ -156,6 +165,15 @@ unlink_from_assembler_name_hash (symtab_node node, bool with_clones)
       else
 	{
 	  tree name = DECL_ASSEMBLER_NAME (node->symbol.decl);
+
+	  // FIXME: how does this nullptr get here when declaring a C++
+	  // FIXME: generic lambda and including iostream (or presumably
+	  // FIXME: any other header with whatever property is triggering
+	  // FIXME: this)!?
+	  //
+	  if (name == 0)
+	    return;
+
           void **slot;
 	  slot = htab_find_slot_with_hash (assembler_name_hash, name,
 					   decl_assembler_name_hash (name),
-- 
1.8.3


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]