diff src/option.c @ 582:6a04259f5e0d

updated for version 7.0165
author vimboss
date Thu, 08 Dec 2005 22:02:51 +0000
parents 25a70b1cd2da
children d220eb88e4e4
line wrap: on
line diff
--- a/src/option.c
+++ b/src/option.c
@@ -6530,21 +6530,24 @@ compile_cap_prog(buf)
     buf_T	*buf;
 {
     regprog_T   *rp = buf->b_cap_prog;
+    char_u	*re;
 
     if (*buf->b_p_spc == NUL)
-    {
 	buf->b_cap_prog = NULL;
-	vim_free(rp);
-	return NULL;
-    }
-
-    /* Prepend a ^ so that we only match at one column */
-    vim_snprintf((char *)IObuff, IOSIZE, "^%s", buf->b_p_spc);
-    buf->b_cap_prog = vim_regcomp(IObuff, RE_MAGIC);
-    if (buf->b_cap_prog == NULL)
-    {
-	buf->b_cap_prog = rp;
-	return e_invarg;
+    else
+    {
+	/* Prepend a ^ so that we only match at one column */
+	re = concat_str((char_u *)"^", buf->b_p_spc);
+	if (re != NULL)
+	{
+	    buf->b_cap_prog = vim_regcomp(re, RE_MAGIC);
+	    if (buf->b_cap_prog == NULL)
+	    {
+		buf->b_cap_prog = rp; /* restore the previous program */
+		return e_invarg;
+	    }
+	    vim_free(re);
+	}
     }
 
     vim_free(rp);