SF.net SVN: geany:[5910] trunk

colombanw at users.sourceforge.net colombanw at xxxxx
Mon Sep 12 16:58:32 UTC 2011


Revision: 5910
          http://geany.svn.sourceforge.net/geany/?rev=5910&view=rev
Author:   colombanw
Date:     2011-09-12 16:58:31 +0000 (Mon, 12 Sep 2011)
Log Message:
-----------
Fix updating symbol list for overloaded C++ symbols

When searching for an old entry to reuse when updating an existing
symbol list, take into account the symbol's argument list not to
always match the same entry for overloaded symbols.

Closes #3406644.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/symbols.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2011-09-11 17:06:11 UTC (rev 5909)
+++ trunk/ChangeLog	2011-09-12 16:58:31 UTC (rev 5910)
@@ -1,3 +1,10 @@
+2011-09-12  Colomban Wendling  <colomban(at)geany(dot)org>
+
+ * src/symbols.c:
+   Fix updating symbol list for overloaded C++ symbols (closes
+   #3406644).
+
+
 2011-09-02  Colomban Wendling  <colomban(at)geany(dot)org>
 
  * src/ui_utils.c:

Modified: trunk/src/symbols.c
===================================================================
--- trunk/src/symbols.c	2011-09-11 17:06:11 UTC (rev 5909)
+++ trunk/src/symbols.c	2011-09-12 16:58:31 UTC (rev 5910)
@@ -1191,7 +1191,9 @@
 	const TMTag *t2 = v2;
 
 	return (t1->type == t2->type && strcmp(t1->name, t2->name) == 0 &&
-			utils_str_equal(t1->atts.entry.scope, t2->atts.entry.scope));
+			utils_str_equal(t1->atts.entry.scope, t2->atts.entry.scope) &&
+			/* include arglist in match to support e.g. C++ overloading */
+			utils_str_equal(t1->atts.entry.arglist, t2->atts.entry.arglist));
 }
 
 
@@ -1210,6 +1212,12 @@
 		for (p = tag->atts.entry.scope; *p != '\0'; p++)
 			h = (h << 5) + h + *p;
 	}
+	/* for e.g. C++ overloading */
+	if (tag->atts.entry.arglist)
+	{
+		for (p = tag->atts.entry.arglist; *p != '\0'; p++)
+			h = (h << 5) + h + *p;
+	}
 
 	return h;
 }

This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Commits mailing list