Blame SOURCES/ctags-5.7-segment-fault.patch
|
|
b1280f |
diff -ruN -x '*~' ctags-5.7/vim.c ctags-5.7/vim.c
|
|
|
b1280f |
--- ctags-5.7/vim.c 2006-10-26 12:06:21.000000000 +0900
|
|
|
b1280f |
+++ ctags-5.7/vim.c 2009-08-28 22:21:31.000000000 +0900
|
|
|
b1280f |
@@ -328,7 +328,7 @@
|
|
|
b1280f |
*/
|
|
|
b1280f |
const unsigned char *cp = line;
|
|
|
b1280f |
|
|
|
b1280f |
- if ( (int) *cp == '\\' )
|
|
|
b1280f |
+ if ( cp && ( (int) *cp == '\\' ) )
|
|
|
b1280f |
{
|
|
|
b1280f |
/*
|
|
|
b1280f |
* We are recursively calling this function is the command
|
|
|
b1280f |
@@ -350,9 +350,10 @@
|
|
|
b1280f |
while (*cp && isspace ((int) *cp))
|
|
|
b1280f |
++cp;
|
|
|
b1280f |
}
|
|
|
b1280f |
- else if ( (!strncmp ((const char*) line, "comp", (size_t) 4) == 0) &&
|
|
|
b1280f |
- (!strncmp ((const char*) line, "comc", (size_t) 4) == 0) &&
|
|
|
b1280f |
- (strncmp ((const char*) line, "com", (size_t) 3) == 0) )
|
|
|
b1280f |
+ else if ( line &&
|
|
|
b1280f |
+ (!strncmp ((const char*) line, "comp", (size_t) 4) == 0) &&
|
|
|
b1280f |
+ (!strncmp ((const char*) line, "comc", (size_t) 4) == 0) &&
|
|
|
b1280f |
+ (strncmp ((const char*) line, "com", (size_t) 3) == 0) )
|
|
|
b1280f |
{
|
|
|
b1280f |
cp += 2;
|
|
|
b1280f |
if ((int) *++cp == 'm' && (int) *++cp == 'a' &&
|
|
|
b1280f |
@@ -394,6 +395,14 @@
|
|
|
b1280f |
while (*cp && !isspace ((int) *cp))
|
|
|
b1280f |
++cp;
|
|
|
b1280f |
}
|
|
|
b1280f |
+ else if (!isalnum ((int) *cp))
|
|
|
b1280f |
+ {
|
|
|
b1280f |
+ /*
|
|
|
b1280f |
+ * Broken syntax: throw away this line
|
|
|
b1280f |
+ */
|
|
|
b1280f |
+ cmdProcessed = TRUE;
|
|
|
b1280f |
+ goto cleanUp;
|
|
|
b1280f |
+ }
|
|
|
b1280f |
} while ( *cp && !isalnum ((int) *cp) );
|
|
|
b1280f |
|
|
|
b1280f |
if ( ! *cp )
|