]> granicus.if.org Git - vim/commitdiff
updated for version 7.2-262 v7.2.262
authorBram Moolenaar <Bram@vim.org>
Fri, 18 Sep 2009 15:25:52 +0000 (15:25 +0000)
committerBram Moolenaar <Bram@vim.org>
Fri, 18 Sep 2009 15:25:52 +0000 (15:25 +0000)
src/ex_getln.c
src/structs.h
src/version.c

index c9d8c3053a77b4e2a709ad9e52b22ba633e96229..153712887e90aabc7d6964e727169a2913e217e6 100644 (file)
@@ -3266,7 +3266,6 @@ nextwild(xp, type, options)
     int                i, j;
     char_u     *p1;
     char_u     *p2;
-    int                oldlen;
     int                difflen;
     int                v;
 
@@ -3291,7 +3290,7 @@ nextwild(xp, type, options)
     out_flush();
 
     i = (int)(xp->xp_pattern - ccline.cmdbuff);
-    oldlen = ccline.cmdpos - i;
+    xp->xp_pattern_len = ccline.cmdpos - i;
 
     if (type == WILD_NEXT || type == WILD_PREV)
     {
@@ -3305,18 +3304,20 @@ nextwild(xp, type, options)
        /*
         * Translate string into pattern and expand it.
         */
-       if ((p1 = addstar(&ccline.cmdbuff[i], oldlen, xp->xp_context)) == NULL)
+       if ((p1 = addstar(xp->xp_pattern, xp->xp_pattern_len,
+                                                    xp->xp_context)) == NULL)
            p2 = NULL;
        else
        {
-           p2 = ExpandOne(xp, p1, vim_strnsave(&ccline.cmdbuff[i], oldlen),
+           p2 = ExpandOne(xp, p1,
+                        vim_strnsave(&ccline.cmdbuff[i], xp->xp_pattern_len),
                    WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT|WILD_ESCAPE
                                                              |options, type);
            vim_free(p1);
            /* longest match: make sure it is not shorter (happens with :help */
            if (p2 != NULL && type == WILD_LONGEST)
            {
-               for (j = 0; j < oldlen; ++j)
+               for (j = 0; j < xp->xp_pattern_len; ++j)
                     if (ccline.cmdbuff[i + j] == '*'
                             || ccline.cmdbuff[i + j] == '?')
                         break;
@@ -3331,7 +3332,7 @@ nextwild(xp, type, options)
 
     if (p2 != NULL && !got_int)
     {
-       difflen = (int)STRLEN(p2) - oldlen;
+       difflen = (int)STRLEN(p2) - xp->xp_pattern_len;
        if (ccline.cmdlen + difflen > ccline.cmdbufflen - 4)
        {
            v = realloc_cmdbuff(ccline.cmdlen + difflen);
@@ -3620,6 +3621,7 @@ ExpandInit(xp)
     expand_T   *xp;
 {
     xp->xp_pattern = NULL;
+    xp->xp_pattern_len = 0;
     xp->xp_backslash = XP_BS_NONE;
 #ifndef BACKSLASH_IN_FILENAME
     xp->xp_shell = FALSE;
@@ -4311,8 +4313,8 @@ expand_cmdline(xp, str, col, matchcount, matches)
     }
 
     /* add star to file name, or convert to regexp if not exp. files. */
-    file_str = addstar(xp->xp_pattern,
-                          (int)(str + col - xp->xp_pattern), xp->xp_context);
+    xp->xp_pattern_len = (int)(str + col - xp->xp_pattern);
+    file_str = addstar(xp->xp_pattern, xp->xp_pattern_len, xp->xp_context);
     if (file_str == NULL)
        return EXPAND_UNSUCCESSFUL;
 
@@ -4781,7 +4783,7 @@ call_user_expand_func(user_expand_func, xp, num_file, file)
        sprintf((char *)num, "%d", ccline.cmdpos);
        args[1] = ccline.cmdbuff;
     }
-    args[0] = xp->xp_pattern;
+    args[0] = vim_strnsave(xp->xp_pattern, xp->xp_pattern_len);
     args[2] = num;
 
     /* Save the cmdline, we don't know what the function may do. */
@@ -4797,6 +4799,7 @@ call_user_expand_func(user_expand_func, xp, num_file, file)
     if (ccline.cmdbuff != NULL)
        ccline.cmdbuff[ccline.cmdlen] = keep;
 
+    vim_free(args[0]);
     return ret;
 }
 
index 137352d95d3ff02cb10c7232a556bb2e726140b7..99afecfcee01e2e505cc69742d78cb2a3c7aab5f 100644 (file)
@@ -432,6 +432,7 @@ typedef struct expand
 {
     int                xp_context;             /* type of expansion */
     char_u     *xp_pattern;            /* start of item to expand */
+    int                xp_pattern_len;         /* bytes in xp_pattern before cursor */
 #if defined(FEAT_USR_CMDS) && defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL)
     char_u     *xp_arg;                /* completion function */
     int                xp_scriptID;            /* SID for completion function */
index 9ccfc525cceb9e83a72e3b5db663878cb362800b..ae540d7d88db48b71a573723ac7ff248871de75e 100644 (file)
@@ -676,6 +676,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    262,
 /**/
     261,
 /**/