To: vim-dev@vim.org Subject: Patch 7.1.233 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit ------------ Patch 7.1.233 Problem: Crash when doing Insert mode completion for a user defined command. (Yegappan Lakshmanan) Solution: Don't use the non-existing command line. Files: src/ex_getln.c *** ../vim-7.1.232/src/ex_getln.c Fri Jan 4 15:16:57 2008 --- src/ex_getln.c Fri Jan 18 13:07:11 2008 *************** *** 4655,4661 **** static void * call_user_expand_func __ARGS((void *(*user_expand_func) __ARGS((char_u *, int, char_u **, int)), expand_T *xp, int *num_file, char_u ***file)); /* ! * call "user_expand_func()" to invoke a user defined VimL function and return * the result (either a string or a List). */ static void * --- 4655,4661 ---- static void * call_user_expand_func __ARGS((void *(*user_expand_func) __ARGS((char_u *, int, char_u **, int)), expand_T *xp, int *num_file, char_u ***file)); /* ! * Call "user_expand_func()" to invoke a user defined VimL function and return * the result (either a string or a List). */ static void * *************** *** 4677,4687 **** *num_file = 0; *file = NULL; ! keep = ccline.cmdbuff[ccline.cmdlen]; ! ccline.cmdbuff[ccline.cmdlen] = 0; ! sprintf((char *)num, "%d", ccline.cmdpos); args[0] = xp->xp_pattern; - args[1] = ccline.cmdbuff; args[2] = num; /* Save the cmdline, we don't know what the function may do. */ --- 4677,4698 ---- *num_file = 0; *file = NULL; ! if (ccline.cmdbuff == NULL) ! { ! /* Completion from Insert mode, pass fake arguments. */ ! keep = 0; ! sprintf((char *)num, "%d", STRLEN(xp->xp_pattern)); ! args[1] = xp->xp_pattern; ! } ! else ! { ! /* Completion on the command line, pass real arguments. */ ! keep = ccline.cmdbuff[ccline.cmdlen]; ! ccline.cmdbuff[ccline.cmdlen] = 0; ! sprintf((char *)num, "%d", ccline.cmdpos); ! args[1] = ccline.cmdbuff; ! } args[0] = xp->xp_pattern; args[2] = num; /* Save the cmdline, we don't know what the function may do. */ *************** *** 4694,4701 **** ccline = save_ccline; current_SID = save_current_SID; ! ! ccline.cmdbuff[ccline.cmdlen] = keep; return ret; } --- 4705,4712 ---- ccline = save_ccline; current_SID = save_current_SID; ! if (ccline.cmdbuff != NULL) ! ccline.cmdbuff[ccline.cmdlen] = keep; return ret; } *** ../vim-7.1.232/src/version.c Fri Jan 18 11:40:02 2008 --- src/version.c Fri Jan 18 13:01:05 2008 *************** *** 668,669 **** --- 668,671 ---- { /* Add new patch number below this line */ + /**/ + 233, /**/ -- "I love deadlines. I especially like the whooshing sound they make as they go flying by." -- Douglas Adams /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ download, build and distribute -- http://www.A-A-P.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///