Patchwork [2/3,lambda] Avoid crash on symbol table writing when generic lambda declared with iostream (or potentially other code) included.

login
register
mail settings
Submitter Adam Butcher
Date July 19, 2013, 9 a.m.
Message ID <1374224442-9360-3-git-send-email-adam@jessamine.co.uk>
Download mbox | patch
Permalink /patch/260214/
State New
Headers show

Comments

Adam Butcher - July 19, 2013, 9 a.m.
---
 gcc/symtab.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

Patch

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),