diff src/misc2.c @ 41:f529edb9bab3 v7.0025

updated for version 7.0025
author vimboss
date Mon, 27 Dec 2004 21:59:20 +0000
parents 410fa1a31baf
children af1bcb9a13c0
line wrap: on
line diff
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -1525,7 +1525,7 @@ ga_init(gap)
     garray_T *gap;
 {
     gap->ga_data = NULL;
-    gap->ga_room = 0;
+    gap->ga_maxlen = 0;
     gap->ga_len = 0;
 }
 
@@ -1552,7 +1552,7 @@ ga_grow(gap, n)
     size_t	len;
     char_u	*pp;
 
-    if (gap->ga_room < n)
+    if (gap->ga_maxlen - gap->ga_len < n)
     {
 	if (n < gap->ga_growsize)
 	    n = gap->ga_growsize;
@@ -1560,7 +1560,7 @@ ga_grow(gap, n)
 	pp = alloc_clear((unsigned)len);
 	if (pp == NULL)
 	    return FAIL;
-	gap->ga_room = n;
+	gap->ga_maxlen = gap->ga_len + n;
 	if (gap->ga_data != NULL)
 	{
 	    mch_memmove(pp, gap->ga_data,
@@ -1587,7 +1587,6 @@ ga_concat(gap, s)
     {
 	mch_memmove((char *)gap->ga_data + gap->ga_len, s, (size_t)len);
 	gap->ga_len += len;
-	gap->ga_room -= len;
     }
 }
 
@@ -1603,7 +1602,6 @@ ga_append(gap, c)
     {
 	*((char *)gap->ga_data + gap->ga_len) = c;
 	++gap->ga_len;
-	--gap->ga_room;
     }
 }
 
@@ -5224,7 +5222,7 @@ pathcmp(p, q, maxlen)
     int maxlen;
 {
     int		i;
-    const char	*s;
+    const char	*s = NULL;
 
     for (i = 0; maxlen < 0 || i < maxlen; ++i)
     {
@@ -5264,18 +5262,19 @@ pathcmp(p, q, maxlen)
 	    return ((char_u *)p)[i] - ((char_u *)q)[i];	    /* no match */
 	}
     }
+    if (s == NULL)	/* "i" ran into "maxlen" */
+	return 0;
 
     /* ignore a trailing slash, but not "//" or ":/" */
-    if (i >= maxlen
-	    || (s[i + 1] == NUL
-		&& i > 0
-		&& !after_pathsep((char_u *)s, (char_u *)s + i)
+    if (s[i + 1] == NUL
+	    && i > 0
+	    && !after_pathsep((char_u *)s, (char_u *)s + i)
 #ifdef BACKSLASH_IN_FILENAME
-		&& (s[i] == '/' || s[i] == '\\')
+	    && (s[i] == '/' || s[i] == '\\')
 #else
-		&& s[i] == '/'
+	    && s[i] == '/'
 #endif
-	       ))
+       )
 	return 0;   /* match with trailing slash */
     if (s == q)
 	return -1;	    /* no match */