Do not add duplicate symbols, patch by Etienne Bersac, fixes bug 528254
authorJuerg Billeter <j@bitron.ch>
Fri, 2 May 2008 19:00:33 +0000 (19:00 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Fri, 2 May 2008 19:00:33 +0000 (19:00 +0000)
2008-05-02  Juerg Billeter  <j@bitron.ch>

* gobject-introspection/scanner.c: (g_igenerator_add_symbol):

Do not add duplicate symbols,
patch by Etienne Bersac, fixes bug 528254

svn path=/trunk/; revision=1332

ChangeLog
gobject-introspection/scanner.c

index 5b03e97..ae7f23a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-05-02  Jürg Billeter  <j@bitron.ch>
+
+       * gobject-introspection/scanner.c: (g_igenerator_add_symbol):
+
+       Do not add duplicate symbols,
+       patch by Étienne Bersac, fixes bug 528254
+
 2008-05-01  Jürg Billeter  <j@bitron.ch>
 
        * doc/vala/types.xml:
index 01fe0f7..2feb5ea 100644 (file)
@@ -1186,6 +1186,7 @@ g_igenerator_add_symbol (GIGenerator * igenerator, CSymbol * symbol)
 {
   /* only add symbols of main file */
   gboolean found_filename = FALSE;
+
   GList *l;
   for (l = igenerator->filenames; l != NULL; l = l->next)
     {
@@ -1199,6 +1200,16 @@ g_igenerator_add_symbol (GIGenerator * igenerator, CSymbol * symbol)
   symbol->directives = g_slist_reverse (igenerator->directives);
   igenerator->directives = NULL;
 
+  /* that's not very optimized ! */
+  for (l = igenerator->symbol_list; l != NULL; l = l->next)
+    {
+      if (g_str_equal (((CSymbol*)l->data)->ident, symbol->ident))
+        {
+          g_printerr ("Dropping %s duplicate\n", symbol->ident);
+          return;
+        }
+  }
+
   if (found_filename || igenerator->macro_scan)
     {
       igenerator->symbol_list =