SF.net SVN: geany:[5997] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Wed Oct 5 12:00:38 UTC 2011
Revision: 5997
http://geany.svn.sourceforge.net/geany/?rev=5997&view=rev
Author: ntrel
Date: 2011-10-05 12:00:38 +0000 (Wed, 05 Oct 2011)
Log Message:
-----------
Fix CTags bug 2970274 - when using addCallbackRegex the callback
receives less than the number of matches. The number is still not
correct (due to POSIX regex compatibility) but at least includes
all non-empty matches now.
http://sourceforge.net/tracker/index.php?func=detail&aid=2970274
&group_id=6556&atid=106556
Modified Paths:
--------------
trunk/ChangeLog
trunk/tagmanager/lregex.c
trunk/tagmanager/php.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2011-10-04 17:10:42 UTC (rev 5996)
+++ trunk/ChangeLog 2011-10-05 12:00:38 UTC (rev 5997)
@@ -1,3 +1,14 @@
+2011-10-05 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * tagmanager/lregex.c, tagmanager/php.c:
+ Fix CTags bug 2970274 - when using addCallbackRegex the callback
+ receives less than the number of matches. The number is still not
+ correct (due to POSIX regex compatibility) but at least includes
+ all non-empty matches now.
+ http://sourceforge.net/tracker/index.php?func=detail&aid=2970274
+ &group_id=6556&atid=106556
+
+
2011-10-04 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* tagmanager/js.c:
Modified: trunk/tagmanager/lregex.c
===================================================================
--- trunk/tagmanager/lregex.c 2011-10-04 17:10:42 UTC (rev 5996)
+++ trunk/tagmanager/lregex.c 2011-10-05 12:00:38 UTC (rev 5997)
@@ -471,11 +471,16 @@
for (i = 0 ; i < BACK_REFERENCE_COUNT ; ++i)
{
int so, eo;
- if (!g_match_info_fetch_pos(minfo, i, &so, &eo) || so == -1)
+ if (!g_match_info_fetch_pos(minfo, i, &so, &eo))
break;
matches [i].start = so;
matches [i].length = eo - so;
- ++count;
+ /* a valid match may have both offsets == -1,
+ * e.g. (foo)*(bar) matching "bar" - see CTags bug 2970274.
+ * As POSIX regex doesn't seem to have a way to count matches,
+ * we return the count up to the last non-empty match. */
+ if (so != -1)
+ count = i + 1;
}
patbuf->u.callback.function (vStringValue (line), matches, count);
}
Modified: trunk/tagmanager/php.c
===================================================================
--- trunk/tagmanager/php.c 2011-10-04 17:10:42 UTC (rev 5996)
+++ trunk/tagmanager/php.c 2011-10-05 12:00:38 UTC (rev 5997)
@@ -80,13 +80,8 @@
addTagRegex(language, "^[ \t]*const[ \t]*([" ALPHA "_][" ALNUM "_]*)[ \t]*[=;]",
"\\1", "m,macro,macros", NULL);
addCallbackRegex(language,
- "^[ \t]*((public|protected|private|static|final)[ \t]+)+function[ \t]+&?[ \t]*([" ALPHA "_][" ALNUM "_]*)[[:space:]]*(\\(.*\\))",
+ "^[ \t]*((public|protected|private|static|final)[ \t]+)*function[ \t]+&?[ \t]*([" ALPHA "_][" ALNUM "_]*)[[:space:]]*(\\(.*\\))",
NULL, function_cb);
- /* note: using (qualifiers)* instead of (qualifiers)+ in the above regex doesn't seem to
- * match 'function' on its own, so we handle that separately: */
- addCallbackRegex(language,
- "^[ \t]*function[ \t]+&?[ \t]*([" ALPHA "_][" ALNUM "_]*)[[:space:]]*(\\(.*\\))",
- NULL, function_cb);
addTagRegex(language, "^[ \t]*(\\$|::\\$|\\$this->)([" ALPHA "_][" ALNUM "_]*)[ \t]*=",
"\\2", "v,variable,variables", NULL);
addTagRegex(language, "^[ \t]*((var|public|protected|private|static)[ \t]+)+\\$([" ALPHA "_][" ALNUM "_]*)[ \t]*[=;]",
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