[PATCH] Avoid false positives in label detection in cpp diff hunk header regex.
From: Vadim Zeitlin <hidden>
Date: 2016-06-15 22:56:29
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Vadim Zeitlin <hidden>
Date: 2016-06-15 22:56:29
Subsystem:
the rest · Maintainer:
Linus Torvalds
A C++ method start such as
void
foo::bar()
wasn't recognized by cpp diff driver as it mistakenly included "foo::bar" as a
label. However the colon in a label can't be followed by another colon, so
recognize this case specially to correctly detect C++ methods using this style.
Signed-off-by: Vadim Zeitlin <redacted>
---
userdiff.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/userdiff.c b/userdiff.c
index ea43a03..9415586 100644
--- a/userdiff.c
+++ b/userdiff.c@@ -125,7 +125,7 @@ PATTERNS("tex","^(\\\\((sub)*section|chapter|part)\\*{0,1}\\{.*)$",
"\\\\[a-zA-Z@]+|\\\\.|[a-zA-Z0-9\x80-\xff]+"),
PATTERNS("cpp",
/* Jump targets or access declarations */
- "!^[ \t]*[A-Za-z_][A-Za-z_0-9]*:.*$\n"
+ "!^[ \t]*[A-Za-z_][A-Za-z_0-9]*:([^:].*$|$)\n"
/* C/++ functions/methods at top level */
"^([A-Za-z_][A-Za-z_0-9]*([ \t*]+[A-Za-z_][A-Za-z_0-9]*([ \t]*::[
\t]*[^[:space:]]+)?){1,}[ \t]*\\([^;]*)$\n"
/* compound type at top level */
--
1.8.2.135.g7b592fa