home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / patches / 7.2 / 7.2.169 < prev    next >
Encoding:
Internet Message Format  |  2009-05-12  |  35.0 KB

  1. To: vim-dev@vim.org
  2. Subject: Patch 7.2.169
  3. Fcc: outbox
  4. From: Bram Moolenaar <Bram@moolenaar.net>
  5. Mime-Version: 1.0
  6. Content-Type: text/plain; charset=UTF-8
  7. Content-Transfer-Encoding: 8bit
  8. ------------
  9.  
  10. Patch 7.2.169
  11. Problem:    Splint complains about a lot of things.
  12. Solution:   Add type casts, #ifdefs and other changes to avoid warnings.
  13.         Change colnr_T from unsigned to int.  Avoids mistakes with
  14.         subtracting columns.
  15. Files:        src/cleanlint.vim, src/diff.c, src/edit.c, src/ex_cmds.c,
  16.         src/ex_cmds2.c, src/ex_docmd.c, src/proto/ex_cmds.pro,
  17.         src/proto/spell.pro, src/quickfix.c, src/spell.c, src/structs.h,
  18.         src/term.h, src/vim.h
  19.  
  20.  
  21. *** ../vim-7.2.168/src/cleanlint.vim    2009-05-13 12:46:36.000000000 +0200
  22. --- src/cleanlint.vim    2009-05-13 18:03:11.000000000 +0200
  23. ***************
  24. *** 1,27 ****
  25.   " Vim tool: Filter output of splint
  26.   "
  27.   " Maintainer:    Bram Moolenaar <Bram@vim.org>
  28. ! " Last Change:    2009 May 05
  29.   
  30.   " Usage: redirect output of "make lint" to a file, edit that file with Vim and
  31.   " :call CleanLint()
  32.   " This deletes irrelevant messages.  What remains might be valid warnings.
  33.   
  34.   fun! CleanLint()
  35. -   g/^  Types are incompatible/lockmarks d
  36.     g/Assignment of dev_t to __dev_t:/lockmarks d
  37.     g/Assignment of __dev_t to dev_t:/lockmarks d
  38.     g/Operands of == have incompatible types (__dev_t, dev_t): /lockmarks d
  39. !   g/Operands of == have incompatible types (unsigned int, int): /lockmarks d
  40.     g/Assignment of char to char_u: /lockmarks d
  41.     g/Assignment of unsigned int to int: /lockmarks d
  42. !   g/Assignment of colnr_T to int: /lockmarks d
  43.     g/Assignment of int to char_u: /lockmarks d
  44.     g/Function .* expects arg . to be wint_t gets int: /lockmarks d
  45. !   g/^digraph.c.*digraphdefault.*is type char, expects char_u:/lockmarks d
  46.     g/^digraph.c.*Additional initialization errors for digraphdefault not reported/lockmarks d
  47.     g/Function strncasecmp expects arg 3 to be int gets size_t: /lockmarks d
  48.     g/ To ignore signs in type comparisons use +ignoresigns/lockmarks d
  49.     g/ To allow arbitrary integral types to match any integral type, use +matchanyintegral./lockmarks d
  50.     g/ To allow arbitrary integral types to match long unsigned, use +longintegral./lockmarks d
  51.   endfun
  52. --- 1,32 ----
  53.   " Vim tool: Filter output of splint
  54.   "
  55.   " Maintainer:    Bram Moolenaar <Bram@vim.org>
  56. ! " Last Change:    2009 May 13
  57.   
  58.   " Usage: redirect output of "make lint" to a file, edit that file with Vim and
  59.   " :call CleanLint()
  60.   " This deletes irrelevant messages.  What remains might be valid warnings.
  61.   
  62.   fun! CleanLint()
  63.     g/Assignment of dev_t to __dev_t:/lockmarks d
  64.     g/Assignment of __dev_t to dev_t:/lockmarks d
  65.     g/Operands of == have incompatible types (__dev_t, dev_t): /lockmarks d
  66. !   g/Operands of == have incompatible types (char_u, int): /lockmarks d
  67.     g/Assignment of char to char_u: /lockmarks d
  68.     g/Assignment of unsigned int to int: /lockmarks d
  69. !   g/Assignment of int to unsigned int: /lockmarks d
  70. !   g/Assignment of unsigned int to long int: /lockmarks d
  71.     g/Assignment of int to char_u: /lockmarks d
  72.     g/Function .* expects arg . to be wint_t gets int: /lockmarks d
  73. !   g/Function .* expects arg . to be size_t gets int: /lockmarks d
  74. !   g/Initial value of .* is type char, expects char_u: /lockmarks d
  75. !   g/^ex_cmds.h:.* Function types are inconsistent. Parameter 1 is implicitly temp, but unqualified in assigned function:/lockmarks d
  76. !   g/^ex_docmd.c:.* nospec_str/lockmarks d
  77.     g/^digraph.c.*Additional initialization errors for digraphdefault not reported/lockmarks d
  78.     g/Function strncasecmp expects arg 3 to be int gets size_t: /lockmarks d
  79. +   g/^  Types are incompatible/lockmarks d
  80.     g/ To ignore signs in type comparisons use +ignoresigns/lockmarks d
  81.     g/ To allow arbitrary integral types to match any integral type, use +matchanyintegral./lockmarks d
  82.     g/ To allow arbitrary integral types to match long unsigned, use +longintegral./lockmarks d
  83. +   g+ A variable is declared but never used. Use /.@unused@./ in front of declaration to suppress message.+lockmarks d
  84.   endfun
  85. *** ../vim-7.2.168/src/diff.c    2009-03-11 12:45:44.000000000 +0100
  86. --- src/diff.c    2009-05-13 16:16:11.000000000 +0200
  87. ***************
  88. *** 827,832 ****
  89. --- 827,833 ----
  90.       char_u    *tmp_diff;
  91.   {
  92.       char_u    *cmd;
  93. +     size_t    len;
  94.   
  95.   #ifdef FEAT_EVAL
  96.       if (*p_dex != NUL)
  97. ***************
  98. *** 835,842 ****
  99.       else
  100.   #endif
  101.       {
  102. !     cmd = alloc((unsigned)(STRLEN(tmp_orig) + STRLEN(tmp_new)
  103. !                 + STRLEN(tmp_diff) + STRLEN(p_srr) + 27));
  104.       if (cmd != NULL)
  105.       {
  106.           /* We don't want $DIFF_OPTIONS to get in the way. */
  107. --- 836,844 ----
  108.       else
  109.   #endif
  110.       {
  111. !     len = STRLEN(tmp_orig) + STRLEN(tmp_new)
  112. !                       + STRLEN(tmp_diff) + STRLEN(p_srr) + 27;
  113. !     cmd = alloc((unsigned)len);
  114.       if (cmd != NULL)
  115.       {
  116.           /* We don't want $DIFF_OPTIONS to get in the way. */
  117. ***************
  118. *** 846,852 ****
  119.           /* Build the diff command and execute it.  Always use -a, binary
  120.            * differences are of no use.  Ignore errors, diff returns
  121.            * non-zero when differences have been found. */
  122. !         sprintf((char *)cmd, "diff %s%s%s%s%s %s",
  123.               diff_a_works == FALSE ? "" : "-a ",
  124.   #if defined(MSWIN) || defined(MSDOS)
  125.               diff_bin_works == TRUE ? "--binary " : "",
  126. --- 848,854 ----
  127.           /* Build the diff command and execute it.  Always use -a, binary
  128.            * differences are of no use.  Ignore errors, diff returns
  129.            * non-zero when differences have been found. */
  130. !         vim_snprintf((char *)cmd, len, "diff %s%s%s%s%s %s",
  131.               diff_a_works == FALSE ? "" : "-a ",
  132.   #if defined(MSWIN) || defined(MSDOS)
  133.               diff_bin_works == TRUE ? "--binary " : "",
  134. ***************
  135. *** 856,862 ****
  136.               (diff_flags & DIFF_IWHITE) ? "-b " : "",
  137.               (diff_flags & DIFF_ICASE) ? "-i " : "",
  138.               tmp_orig, tmp_new);
  139. !         append_redir(cmd, p_srr, tmp_diff);
  140.   #ifdef FEAT_AUTOCMD
  141.           block_autocmds();    /* Avoid ShellCmdPost stuff */
  142.   #endif
  143. --- 858,864 ----
  144.               (diff_flags & DIFF_IWHITE) ? "-b " : "",
  145.               (diff_flags & DIFF_ICASE) ? "-i " : "",
  146.               tmp_orig, tmp_new);
  147. !         append_redir(cmd, (int)len, p_srr, tmp_diff);
  148.   #ifdef FEAT_AUTOCMD
  149.           block_autocmds();    /* Avoid ShellCmdPost stuff */
  150.   #endif
  151. ***************
  152. *** 881,886 ****
  153. --- 883,889 ----
  154.       char_u    *tmp_orig;    /* name of original temp file */
  155.       char_u    *tmp_new;    /* name of patched temp file */
  156.       char_u    *buf = NULL;
  157. +     size_t    buflen;
  158.       win_T    *old_curwin = curwin;
  159.       char_u    *newname = NULL;    /* name of patched file buffer */
  160.   #ifdef UNIX
  161. ***************
  162. *** 920,930 ****
  163.       /* Get the absolute path of the patchfile, changing directory below. */
  164.       fullname = FullName_save(eap->arg, FALSE);
  165.   #endif
  166. !     buf = alloc((unsigned)(STRLEN(tmp_orig) + (
  167.   # ifdef UNIX
  168.               fullname != NULL ? STRLEN(fullname) :
  169.   # endif
  170. !             STRLEN(eap->arg)) + STRLEN(tmp_new) + 16));
  171.       if (buf == NULL)
  172.       goto theend;
  173.   
  174. --- 923,934 ----
  175.       /* Get the absolute path of the patchfile, changing directory below. */
  176.       fullname = FullName_save(eap->arg, FALSE);
  177.   #endif
  178. !     buflen = STRLEN(tmp_orig) + (
  179.   # ifdef UNIX
  180.               fullname != NULL ? STRLEN(fullname) :
  181.   # endif
  182. !             STRLEN(eap->arg)) + STRLEN(tmp_new) + 16;
  183. !     buf = alloc((unsigned)buflen);
  184.       if (buf == NULL)
  185.       goto theend;
  186.   
  187. ***************
  188. *** 961,967 ****
  189.       {
  190.       /* Build the patch command and execute it.  Ignore errors.  Switch to
  191.        * cooked mode to allow the user to respond to prompts. */
  192. !     sprintf((char *)buf, "patch -o %s %s < \"%s\"", tmp_new, tmp_orig,
  193.   # ifdef UNIX
  194.           fullname != NULL ? fullname :
  195.   # endif
  196. --- 965,972 ----
  197.       {
  198.       /* Build the patch command and execute it.  Ignore errors.  Switch to
  199.        * cooked mode to allow the user to respond to prompts. */
  200. !     vim_snprintf((char *)buf, buflen, "patch -o %s %s < \"%s\"",
  201. !         tmp_new, tmp_orig,
  202.   # ifdef UNIX
  203.           fullname != NULL ? fullname :
  204.   # endif
  205. *** ../vim-7.2.168/src/edit.c    2009-05-13 12:46:36.000000000 +0200
  206. --- src/edit.c    2009-05-13 18:29:21.000000000 +0200
  207. ***************
  208. *** 169,175 ****
  209.   static int  ins_compl_key2count __ARGS((int c));
  210.   static int  ins_compl_use_match __ARGS((int c));
  211.   static int  ins_complete __ARGS((int c));
  212. ! static int  quote_meta __ARGS((char_u *dest, char_u *str, int len));
  213.   #endif /* FEAT_INS_EXPAND */
  214.   
  215.   #define BACKSPACE_CHAR            1
  216. --- 169,175 ----
  217.   static int  ins_compl_key2count __ARGS((int c));
  218.   static int  ins_compl_use_match __ARGS((int c));
  219.   static int  ins_complete __ARGS((int c));
  220. ! static unsigned  quote_meta __ARGS((char_u *dest, char_u *str, int len));
  221.   #endif /* FEAT_INS_EXPAND */
  222.   
  223.   #define BACKSPACE_CHAR            1
  224. ***************
  225. *** 757,763 ****
  226.            * there is nothing to add, CTRL-L works like CTRL-P then. */
  227.           if (c == Ctrl_L
  228.               && (ctrl_x_mode != CTRL_X_WHOLE_LINE
  229. !                 || STRLEN(compl_shown_match->cp_str)
  230.                         > curwin->w_cursor.col - compl_col))
  231.           {
  232.               ins_compl_addfrommatch();
  233. --- 757,763 ----
  234.            * there is nothing to add, CTRL-L works like CTRL-P then. */
  235.           if (c == Ctrl_L
  236.               && (ctrl_x_mode != CTRL_X_WHOLE_LINE
  237. !                 || (int)STRLEN(compl_shown_match->cp_str)
  238.                         > curwin->w_cursor.col - compl_col))
  239.           {
  240.               ins_compl_addfrommatch();
  241. ***************
  242. *** 3837,3843 ****
  243. --- 3837,3847 ----
  244.       char_u    *word;
  245.       int        icase = FALSE;
  246.       int        adup = FALSE;
  247. + #ifdef S_SPLINT_S  /* splint doesn't parse array of pointers correctly */
  248. +     char_u    **cptext;
  249. + #else
  250.       char_u    *(cptext[CPT_COUNT]);
  251. + #endif
  252.   
  253.       if (tv->v_type == VAR_DICT && tv->vval.v_dict != NULL)
  254.       {
  255. ***************
  256. *** 3994,4000 ****
  257.           else if (*e_cpt == ']' || *e_cpt == 't')
  258.           {
  259.               type = CTRL_X_TAGS;
  260. !             sprintf((char*)IObuff, _("Scanning tags."));
  261.               (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
  262.           }
  263.           else
  264. --- 3998,4004 ----
  265.           else if (*e_cpt == ']' || *e_cpt == 't')
  266.           {
  267.               type = CTRL_X_TAGS;
  268. !             vim_snprintf((char *)IObuff, IOSIZE, _("Scanning tags."));
  269.               (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
  270.           }
  271.           else
  272. ***************
  273. *** 4093,4099 ****
  274.       case CTRL_X_SPELL:
  275.   #ifdef FEAT_SPELL
  276.           num_matches = expand_spelling(first_match_pos.lnum,
  277. !                  first_match_pos.col, compl_pattern, &matches);
  278.           if (num_matches > 0)
  279.           ins_compl_add_matches(num_matches, matches, p_ic);
  280.   #endif
  281. --- 4097,4103 ----
  282.       case CTRL_X_SPELL:
  283.   #ifdef FEAT_SPELL
  284.           num_matches = expand_spelling(first_match_pos.lnum,
  285. !                              compl_pattern, &matches);
  286.           if (num_matches > 0)
  287.           ins_compl_add_matches(num_matches, matches, p_ic);
  288.   #endif
  289. ***************
  290. *** 4803,4812 ****
  291.           {
  292.           char_u        *prefix = (char_u *)"\\<";
  293.   
  294. !         /* we need 3 extra chars, 1 for the NUL and
  295. !          * 2 >= strlen(prefix)    -- Acevedo */
  296.           compl_pattern = alloc(quote_meta(NULL, line + compl_col,
  297. !                                compl_length) + 3);
  298.           if (compl_pattern == NULL)
  299.               return FAIL;
  300.           if (!vim_iswordp(line + compl_col)
  301. --- 4807,4815 ----
  302.           {
  303.           char_u        *prefix = (char_u *)"\\<";
  304.   
  305. !         /* we need up to 2 extra chars for the prefix */
  306.           compl_pattern = alloc(quote_meta(NULL, line + compl_col,
  307. !                                compl_length) + 2);
  308.           if (compl_pattern == NULL)
  309.               return FAIL;
  310.           if (!vim_iswordp(line + compl_col)
  311. ***************
  312. *** 4881,4887 ****
  313.           else
  314.           {
  315.               compl_pattern = alloc(quote_meta(NULL, line + compl_col,
  316. !                                compl_length) + 3);
  317.               if (compl_pattern == NULL)
  318.               return FAIL;
  319.               STRCPY((char *)compl_pattern, "\\<");
  320. --- 4884,4890 ----
  321.           else
  322.           {
  323.               compl_pattern = alloc(quote_meta(NULL, line + compl_col,
  324. !                                compl_length) + 2);
  325.               if (compl_pattern == NULL)
  326.               return FAIL;
  327.               STRCPY((char *)compl_pattern, "\\<");
  328. ***************
  329. *** 4963,4969 ****
  330.           if (col < 0)
  331.           col = curs_col;
  332.           compl_col = col;
  333. !         if ((colnr_T)compl_col > curs_col)
  334.           compl_col = curs_col;
  335.   
  336.           /* Setup variables for completion.  Need to obtain "line" again,
  337. --- 4966,4972 ----
  338.           if (col < 0)
  339.           col = curs_col;
  340.           compl_col = col;
  341. !         if (compl_col > curs_col)
  342.           compl_col = curs_col;
  343.   
  344.           /* Setup variables for completion.  Need to obtain "line" again,
  345. ***************
  346. *** 5236,5250 ****
  347.    * a backslash) the metachars, and dest would be NUL terminated.
  348.    * Returns the length (needed) of dest
  349.    */
  350. !     static int
  351.   quote_meta(dest, src, len)
  352.       char_u    *dest;
  353.       char_u    *src;
  354.       int        len;
  355.   {
  356. !     int    m;
  357.   
  358. !     for (m = len; --len >= 0; src++)
  359.       {
  360.       switch (*src)
  361.       {
  362. --- 5239,5253 ----
  363.    * a backslash) the metachars, and dest would be NUL terminated.
  364.    * Returns the length (needed) of dest
  365.    */
  366. !     static unsigned
  367.   quote_meta(dest, src, len)
  368.       char_u    *dest;
  369.       char_u    *src;
  370.       int        len;
  371.   {
  372. !     unsigned    m = (unsigned)len + 1;  /* one extra for the NUL */
  373.   
  374. !     for ( ; --len >= 0; src++)
  375.       {
  376.       switch (*src)
  377.       {
  378. ***************
  379. *** 6073,6079 ****
  380.        * in 'formatoptions' and there is a single character before the cursor.
  381.        * Otherwise the line would be broken and when typing another non-white
  382.        * next they are not joined back together. */
  383. !     wasatend = (pos.col == STRLEN(old));
  384.       if (*old != NUL && !trailblank && wasatend)
  385.       {
  386.       dec_cursor();
  387. --- 6076,6082 ----
  388.        * in 'formatoptions' and there is a single character before the cursor.
  389.        * Otherwise the line would be broken and when typing another non-white
  390.        * next they are not joined back together. */
  391. !     wasatend = (pos.col == (colnr_T)STRLEN(old));
  392.       if (*old != NUL && !trailblank && wasatend)
  393.       {
  394.       dec_cursor();
  395. ***************
  396. *** 6250,6256 ****
  397.        * three digits. */
  398.       if (VIM_ISDIGIT(c))
  399.       {
  400. !     sprintf((char *)buf, "%03d", c);
  401.       AppendToRedobuff(buf);
  402.       }
  403.       else
  404. --- 6253,6259 ----
  405.        * three digits. */
  406.       if (VIM_ISDIGIT(c))
  407.       {
  408. !     vim_snprintf((char *)buf, sizeof(buf), "%03d", c);
  409.       AppendToRedobuff(buf);
  410.       }
  411.       else
  412. ***************
  413. *** 6453,6462 ****
  414.            * deleted characters. */
  415.           if (VIsual_active && VIsual.lnum == curwin->w_cursor.lnum)
  416.           {
  417. !         cc = (int)STRLEN(ml_get_curline());
  418. !         if (VIsual.col > (colnr_T)cc)
  419.           {
  420. !             VIsual.col = cc;
  421.   # ifdef FEAT_VIRTUALEDIT
  422.               VIsual.coladd = 0;
  423.   # endif
  424. --- 6457,6467 ----
  425.            * deleted characters. */
  426.           if (VIsual_active && VIsual.lnum == curwin->w_cursor.lnum)
  427.           {
  428. !         int len = (int)STRLEN(ml_get_curline());
  429. !         if (VIsual.col > len)
  430.           {
  431. !             VIsual.col = len;
  432.   # ifdef FEAT_VIRTUALEDIT
  433.               VIsual.coladd = 0;
  434.   # endif
  435. ***************
  436. *** 8315,8320 ****
  437. --- 8320,8326 ----
  438.       linenr_T    lnum;
  439.       int        cc;
  440.       int        temp = 0;        /* init for GCC */
  441. +     colnr_T    save_col;
  442.       colnr_T    mincol;
  443.       int        did_backspace = FALSE;
  444.       int        in_indent;
  445. ***************
  446. *** 8472,8484 ****
  447.            */
  448.           while (cc > 0)
  449.           {
  450. !             temp = curwin->w_cursor.col;
  451.   #ifdef FEAT_MBYTE
  452.               mb_replace_pop_ins(cc);
  453.   #else
  454.               ins_char(cc);
  455.   #endif
  456. !             curwin->w_cursor.col = temp;
  457.               cc = replace_pop();
  458.           }
  459.           /* restore the characters that NL replaced */
  460. --- 8478,8490 ----
  461.            */
  462.           while (cc > 0)
  463.           {
  464. !             save_col = curwin->w_cursor.col;
  465.   #ifdef FEAT_MBYTE
  466.               mb_replace_pop_ins(cc);
  467.   #else
  468.               ins_char(cc);
  469.   #endif
  470. !             curwin->w_cursor.col = save_col;
  471.               cc = replace_pop();
  472.           }
  473.           /* restore the characters that NL replaced */
  474. ***************
  475. *** 8510,8520 ****
  476.   #endif
  477.                   )
  478.       {
  479. !         temp = curwin->w_cursor.col;
  480.           beginline(BL_WHITE);
  481.           if (curwin->w_cursor.col < (colnr_T)temp)
  482.           mincol = curwin->w_cursor.col;
  483. !         curwin->w_cursor.col = temp;
  484.       }
  485.   
  486.       /*
  487. --- 8516,8526 ----
  488.   #endif
  489.                   )
  490.       {
  491. !         save_col = curwin->w_cursor.col;
  492.           beginline(BL_WHITE);
  493.           if (curwin->w_cursor.col < (colnr_T)temp)
  494.           mincol = curwin->w_cursor.col;
  495. !         curwin->w_cursor.col = save_col;
  496.       }
  497.   
  498.       /*
  499. *** ../vim-7.2.168/src/ex_cmds.c    2009-05-13 12:46:36.000000000 +0200
  500. --- src/ex_cmds.c    2009-05-13 18:24:18.000000000 +0200
  501. ***************
  502. *** 87,99 ****
  503.                      ))
  504.       {
  505.           transchar_nonprint(buf3, c);
  506. !         sprintf(buf1, "  <%s>", (char *)buf3);
  507.       }
  508.       else
  509.           buf1[0] = NUL;
  510.   #ifndef EBCDIC
  511.       if (c >= 0x80)
  512. !         sprintf(buf2, "  <M-%s>", transchar(c & 0x7f));
  513.       else
  514.   #endif
  515.           buf2[0] = NUL;
  516. --- 87,100 ----
  517.                      ))
  518.       {
  519.           transchar_nonprint(buf3, c);
  520. !         vim_snprintf(buf1, sizeof(buf1), "  <%s>", (char *)buf3);
  521.       }
  522.       else
  523.           buf1[0] = NUL;
  524.   #ifndef EBCDIC
  525.       if (c >= 0x80)
  526. !         vim_snprintf(buf2, sizeof(buf2), "  <M-%s>",
  527. !                          (char *)transchar(c & 0x7f));
  528.       else
  529.   #endif
  530.           buf2[0] = NUL;
  531. ***************
  532. *** 358,364 ****
  533.       linenr_T    lnum;
  534.       long    maxlen = 0;
  535.       sorti_T    *nrs;
  536. !     size_t    count = eap->line2 - eap->line1 + 1;
  537.       size_t    i;
  538.       char_u    *p;
  539.       char_u    *s;
  540. --- 359,365 ----
  541.       linenr_T    lnum;
  542.       long    maxlen = 0;
  543.       sorti_T    *nrs;
  544. !     size_t    count = (size_t)(eap->line2 - eap->line1 + 1);
  545.       size_t    i;
  546.       char_u    *p;
  547.       char_u    *s;
  548. ***************
  549. *** 957,963 ****
  550.           }
  551.           len += (int)STRLEN(prevcmd);
  552.       }
  553. !     if ((t = alloc(len)) == NULL)
  554.       {
  555.           vim_free(newcmd);
  556.           return;
  557. --- 958,964 ----
  558.           }
  559.           len += (int)STRLEN(prevcmd);
  560.       }
  561. !     if ((t = alloc((unsigned)len)) == NULL)
  562.       {
  563.           vim_free(newcmd);
  564.           return;
  565. ***************
  566. *** 1548,1554 ****
  567.        * redirecting input and/or output.
  568.        */
  569.       if (itmp != NULL || otmp != NULL)
  570. !     sprintf((char *)buf, "(%s)", (char *)cmd);
  571.       else
  572.       STRCPY(buf, cmd);
  573.       if (itmp != NULL)
  574. --- 1549,1555 ----
  575.        * redirecting input and/or output.
  576.        */
  577.       if (itmp != NULL || otmp != NULL)
  578. !     vim_snprintf((char *)buf, len, "(%s)", (char *)cmd);
  579.       else
  580.       STRCPY(buf, cmd);
  581.       if (itmp != NULL)
  582. ***************
  583. *** 1597,1633 ****
  584.       }
  585.   #endif
  586.       if (otmp != NULL)
  587. !     append_redir(buf, p_srr, otmp);
  588.   
  589.       return buf;
  590.   }
  591.   
  592.   /*
  593. !  * Append output redirection for file "fname" to the end of string buffer "buf"
  594.    * Works with the 'shellredir' and 'shellpipe' options.
  595.    * The caller should make sure that there is enough room:
  596.    *    STRLEN(opt) + STRLEN(fname) + 3
  597.    */
  598.       void
  599. ! append_redir(buf, opt, fname)
  600.       char_u    *buf;
  601.       char_u    *opt;
  602.       char_u    *fname;
  603.   {
  604.       char_u    *p;
  605.   
  606. !     buf += STRLEN(buf);
  607.       /* find "%s", skipping "%%" */
  608.       for (p = opt; (p = vim_strchr(p, '%')) != NULL; ++p)
  609.       if (p[1] == 's')
  610.           break;
  611.       if (p != NULL)
  612.       {
  613. !     *buf = ' '; /* not really needed? Not with sh, ksh or bash */
  614. !     sprintf((char *)buf + 1, (char *)opt, (char *)fname);
  615.       }
  616.       else
  617. !     sprintf((char *)buf,
  618.   #ifdef FEAT_QUICKFIX
  619.   # ifndef RISCOS
  620.           opt != p_sp ? " %s%s" :
  621. --- 1598,1638 ----
  622.       }
  623.   #endif
  624.       if (otmp != NULL)
  625. !     append_redir(buf, (int)len, p_srr, otmp);
  626.   
  627.       return buf;
  628.   }
  629.   
  630.   /*
  631. !  * Append output redirection for file "fname" to the end of string buffer
  632. !  * "buf[buflen]"
  633.    * Works with the 'shellredir' and 'shellpipe' options.
  634.    * The caller should make sure that there is enough room:
  635.    *    STRLEN(opt) + STRLEN(fname) + 3
  636.    */
  637.       void
  638. ! append_redir(buf, buflen, opt, fname)
  639.       char_u    *buf;
  640. +     int        buflen;
  641.       char_u    *opt;
  642.       char_u    *fname;
  643.   {
  644.       char_u    *p;
  645. +     char_u    *end;
  646.   
  647. !     end = buf + STRLEN(buf);
  648.       /* find "%s", skipping "%%" */
  649.       for (p = opt; (p = vim_strchr(p, '%')) != NULL; ++p)
  650.       if (p[1] == 's')
  651.           break;
  652.       if (p != NULL)
  653.       {
  654. !     *end = ' '; /* not really needed? Not with sh, ksh or bash */
  655. !     vim_snprintf((char *)end + 1, (size_t)(buflen - (end + 1 - buf)),
  656. !                           (char *)opt, (char *)fname);
  657.       }
  658.       else
  659. !     vim_snprintf((char *)end, (size_t)(buflen - (end - buf)),
  660.   #ifdef FEAT_QUICKFIX
  661.   # ifndef RISCOS
  662.           opt != p_sp ? " %s%s" :
  663. ***************
  664. *** 2390,2396 ****
  665.   
  666.       if (curwin->w_p_nu || use_number)
  667.       {
  668. !     sprintf((char *)numbuf, "%*ld ", number_width(curwin), (long)lnum);
  669.       msg_puts_attr(numbuf, hl_attr(HLF_N));    /* Highlight line nrs */
  670.       }
  671.       msg_prt_line(ml_get(lnum), list);
  672. --- 2395,2402 ----
  673.   
  674.       if (curwin->w_p_nu || use_number)
  675.       {
  676. !     vim_snprintf((char *)numbuf, sizeof(numbuf),
  677. !                    "%*ld ", number_width(curwin), (long)lnum);
  678.       msg_puts_attr(numbuf, hl_attr(HLF_N));    /* Highlight line nrs */
  679.       }
  680.       msg_prt_line(ml_get(lnum), list);
  681. ***************
  682. *** 4486,4492 ****
  683.           char_u    *p1;
  684.           int        did_sub = FALSE;
  685.           int        lastone;
  686. !         unsigned    len, needed_len;
  687.           long    nmatch_tl = 0;    /* nr of lines matched below lnum */
  688.           int        do_again;    /* do it again after joining lines */
  689.           int        skip_match = FALSE;
  690. --- 4492,4498 ----
  691.           char_u    *p1;
  692.           int        did_sub = FALSE;
  693.           int        lastone;
  694. !         int        len, copy_len, needed_len;
  695.           long    nmatch_tl = 0;    /* nr of lines matched below lnum */
  696.           int        do_again;    /* do it again after joining lines */
  697.           int        skip_match = FALSE;
  698. ***************
  699. *** 4631,4636 ****
  700. --- 4637,4644 ----
  701.   
  702.           if (do_ask)
  703.           {
  704. +             int typed;
  705.               /* change State to CONFIRM, so that the mouse works
  706.                * properly */
  707.               save_State = State;
  708. ***************
  709. *** 4669,4675 ****
  710.                   resp = getexmodeline('?', NULL, 0);
  711.                   if (resp != NULL)
  712.                   {
  713. !                 i = *resp;
  714.                   vim_free(resp);
  715.                   }
  716.               }
  717. --- 4677,4683 ----
  718.                   resp = getexmodeline('?', NULL, 0);
  719.                   if (resp != NULL)
  720.                   {
  721. !                 typed = *resp;
  722.                   vim_free(resp);
  723.                   }
  724.               }
  725. ***************
  726. *** 4721,4727 ****
  727.   #endif
  728.                   ++no_mapping;    /* don't map this key */
  729.                   ++allow_keys;    /* allow special keys */
  730. !                 i = plain_vgetc();
  731.                   --allow_keys;
  732.                   --no_mapping;
  733.   
  734. --- 4729,4735 ----
  735.   #endif
  736.                   ++no_mapping;    /* don't map this key */
  737.                   ++allow_keys;    /* allow special keys */
  738. !                 typed = plain_vgetc();
  739.                   --allow_keys;
  740.                   --no_mapping;
  741.   
  742. ***************
  743. *** 4732,4766 ****
  744.               }
  745.   
  746.               need_wait_return = FALSE; /* no hit-return prompt */
  747. !             if (i == 'q' || i == ESC || i == Ctrl_C
  748.   #ifdef UNIX
  749. !                 || i == intr_char
  750.   #endif
  751.                   )
  752.               {
  753.                   got_quit = TRUE;
  754.                   break;
  755.               }
  756. !             if (i == 'n')
  757.                   break;
  758. !             if (i == 'y')
  759.                   break;
  760. !             if (i == 'l')
  761.               {
  762.                   /* last: replace and then stop */
  763.                   do_all = FALSE;
  764.                   line2 = lnum;
  765.                   break;
  766.               }
  767. !             if (i == 'a')
  768.               {
  769.                   do_ask = FALSE;
  770.                   break;
  771.               }
  772.   #ifdef FEAT_INS_EXPAND
  773. !             if (i == Ctrl_E)
  774.                   scrollup_clamp();
  775. !             else if (i == Ctrl_Y)
  776.                   scrolldown_clamp();
  777.   #endif
  778.               }
  779. --- 4740,4774 ----
  780.               }
  781.   
  782.               need_wait_return = FALSE; /* no hit-return prompt */
  783. !             if (typed == 'q' || typed == ESC || typed == Ctrl_C
  784.   #ifdef UNIX
  785. !                 || typed == intr_char
  786.   #endif
  787.                   )
  788.               {
  789.                   got_quit = TRUE;
  790.                   break;
  791.               }
  792. !             if (typed == 'n')
  793.                   break;
  794. !             if (typed == 'y')
  795.                   break;
  796. !             if (typed == 'l')
  797.               {
  798.                   /* last: replace and then stop */
  799.                   do_all = FALSE;
  800.                   line2 = lnum;
  801.                   break;
  802.               }
  803. !             if (typed == 'a')
  804.               {
  805.                   do_ask = FALSE;
  806.                   break;
  807.               }
  808.   #ifdef FEAT_INS_EXPAND
  809. !             if (typed == Ctrl_E)
  810.                   scrollup_clamp();
  811. !             else if (typed == Ctrl_Y)
  812.                   scrolldown_clamp();
  813.   #endif
  814.               }
  815. ***************
  816. *** 4771,4777 ****
  817.               if (vim_strchr(p_cpo, CPO_UNDO) != NULL)
  818.               --no_u_sync;
  819.   
  820. !             if (i == 'n')
  821.               {
  822.               /* For a multi-line match, put matchcol at the NUL at
  823.                * the end of the line and set nmatch to one, so that
  824. --- 4779,4785 ----
  825.               if (vim_strchr(p_cpo, CPO_UNDO) != NULL)
  826.               --no_u_sync;
  827.   
  828. !             if (typed == 'n')
  829.               {
  830.               /* For a multi-line match, put matchcol at the NUL at
  831.                * the end of the line and set nmatch to one, so that
  832. ***************
  833. *** 4822,4830 ****
  834.               p1 = ml_get(sub_firstlnum + nmatch - 1);
  835.               nmatch_tl += nmatch - 1;
  836.           }
  837. !         i = regmatch.startpos[0].col - copycol;
  838. !         needed_len = i + ((unsigned)STRLEN(p1) - regmatch.endpos[0].col)
  839. !                                  + sublen + 1;
  840.           if (new_start == NULL)
  841.           {
  842.               /*
  843. --- 4830,4838 ----
  844.               p1 = ml_get(sub_firstlnum + nmatch - 1);
  845.               nmatch_tl += nmatch - 1;
  846.           }
  847. !         copy_len = regmatch.startpos[0].col - copycol;
  848. !         needed_len = copy_len + ((unsigned)STRLEN(p1)
  849. !                        - regmatch.endpos[0].col) + sublen + 1;
  850.           if (new_start == NULL)
  851.           {
  852.               /*
  853. ***************
  854. *** 4847,4853 ****
  855.                */
  856.               len = (unsigned)STRLEN(new_start);
  857.               needed_len += len;
  858. !             if (needed_len > new_start_len)
  859.               {
  860.               new_start_len = needed_len + 50;
  861.               if ((p1 = alloc_check(new_start_len)) == NULL)
  862. --- 4855,4861 ----
  863.                */
  864.               len = (unsigned)STRLEN(new_start);
  865.               needed_len += len;
  866. !             if (needed_len > (int)new_start_len)
  867.               {
  868.               new_start_len = needed_len + 50;
  869.               if ((p1 = alloc_check(new_start_len)) == NULL)
  870. ***************
  871. *** 4865,4872 ****
  872.           /*
  873.            * copy the text up to the part that matched
  874.            */
  875. !         mch_memmove(new_end, sub_firstline + copycol, (size_t)i);
  876. !         new_end += i;
  877.   
  878.           (void)vim_regsub_multi(®match,
  879.                       sub_firstlnum - regmatch.startpos[0].lnum,
  880. --- 4873,4880 ----
  881.           /*
  882.            * copy the text up to the part that matched
  883.            */
  884. !         mch_memmove(new_end, sub_firstline + copycol, (size_t)copy_len);
  885. !         new_end += copy_len;
  886.   
  887.           (void)vim_regsub_multi(®match,
  888.                       sub_firstlnum - regmatch.startpos[0].lnum,
  889. ***************
  890. *** 5768,5773 ****
  891. --- 5776,5785 ----
  892.   {
  893.       char_u    *s, *d;
  894.       int        i;
  895. + #ifdef S_SPLINT_S  /* splint doesn't understand array of pointers */
  896. +     static char **mtable;
  897. +     static char **rtable;
  898. + #else
  899.       static char *(mtable[]) = {"*", "g*", "[*", "]*", ":*",
  900.                      "/*", "/\\*", "\"*", "**",
  901.                      "/\\(\\)",
  902. ***************
  903. *** 5782,5787 ****
  904. --- 5794,5800 ----
  905.                      "/\\\\?", "/\\\\z(\\\\)", "\\\\=", ":s\\\\=",
  906.                      "\\[count]", "\\[quotex]", "\\[range]",
  907.                      "\\[pattern]", "\\\\bar", "/\\\\%\\$"};
  908. + #endif
  909.       int flags;
  910.   
  911.       d = IObuff;            /* assume IObuff is long enough! */
  912. ***************
  913. *** 5790,5796 ****
  914.        * Recognize a few exceptions to the rule.    Some strings that contain '*'
  915.        * with "star".  Otherwise '*' is recognized as a wildcard.
  916.        */
  917. !     for (i = sizeof(mtable) / sizeof(char *); --i >= 0; )
  918.       if (STRCMP(arg, mtable[i]) == 0)
  919.       {
  920.           STRCPY(d, rtable[i]);
  921. --- 5803,5809 ----
  922.        * Recognize a few exceptions to the rule.    Some strings that contain '*'
  923.        * with "star".  Otherwise '*' is recognized as a wildcard.
  924.        */
  925. !     for (i = (int)(sizeof(mtable) / sizeof(char *)); --i >= 0; )
  926.       if (STRCMP(arg, mtable[i]) == 0)
  927.       {
  928.           STRCPY(d, rtable[i]);
  929. *** ../vim-7.2.168/src/ex_cmds2.c    2009-02-05 20:47:14.000000000 +0100
  930. --- src/ex_cmds2.c    2009-05-13 16:22:33.000000000 +0200
  931. ***************
  932. *** 3373,3379 ****
  933.           p = skipwhite(sp->nextline);
  934.           if (*p != '\\')
  935.           break;
  936. !         s = alloc((int)(STRLEN(line) + STRLEN(p)));
  937.           if (s == NULL)    /* out of memory */
  938.           break;
  939.           STRCPY(s, line);
  940. --- 3373,3379 ----
  941.           p = skipwhite(sp->nextline);
  942.           if (*p != '\\')
  943.           break;
  944. !         s = alloc((unsigned)(STRLEN(line) + STRLEN(p)));
  945.           if (s == NULL)    /* out of memory */
  946.           break;
  947.           STRCPY(s, line);
  948. *** ../vim-7.2.168/src/ex_docmd.c    2009-04-29 18:44:38.000000000 +0200
  949. --- src/ex_docmd.c    2009-05-13 17:56:44.000000000 +0200
  950. ***************
  951. *** 2737,2743 ****
  952.       int        i;
  953.   
  954.       for (i = 0; cmd[i] != NUL; ++i)
  955. !     if (cmd[i] != (*pp)[i])
  956.           break;
  957.       if (i >= len && !isalpha((*pp)[i]))
  958.       {
  959. --- 2737,2743 ----
  960.       int        i;
  961.   
  962.       for (i = 0; cmd[i] != NUL; ++i)
  963. !     if (((char_u *)cmd)[i] != (*pp)[i])
  964.           break;
  965.       if (i >= len && !isalpha((*pp)[i]))
  966.       {
  967. ***************
  968. *** 2803,2809 ****
  969.           /* Check for ":dl", ":dell", etc. to ":deletel": that's
  970.            * :delete with the 'l' flag.  Same for 'p'. */
  971.           for (i = 0; i < len; ++i)
  972. !         if (eap->cmd[i] != "delete"[i])
  973.               break;
  974.           if (i == len - 1)
  975.           {
  976. --- 2803,2809 ----
  977.           /* Check for ":dl", ":dell", etc. to ":deletel": that's
  978.            * :delete with the 'l' flag.  Same for 'p'. */
  979.           for (i = 0; i < len; ++i)
  980. !         if (eap->cmd[i] != ((char_u *)"delete")[i])
  981.               break;
  982.           if (i == len - 1)
  983.           {
  984. ***************
  985. *** 3823,3829 ****
  986.       char_u    *cmd;
  987.       int        *ctx;    /* pointer to xp_context or NULL */
  988.   {
  989. !     int        delim;
  990.   
  991.       while (vim_strchr((char_u *)" \t0123456789.$%'/?-+,;", *cmd) != NULL)
  992.       {
  993. --- 3823,3829 ----
  994.       char_u    *cmd;
  995.       int        *ctx;    /* pointer to xp_context or NULL */
  996.   {
  997. !     unsigned    delim;
  998.   
  999.       while (vim_strchr((char_u *)" \t0123456789.$%'/?-+,;", *cmd) != NULL)
  1000.       {
  1001. ***************
  1002. *** 9417,9423 ****
  1003.   {
  1004.       int        len;
  1005.       int        i;
  1006. !     static char *(spec_str[]) = {
  1007.               "%",
  1008.   #define SPEC_PERC   0
  1009.               "#",
  1010. --- 9417,9429 ----
  1011.   {
  1012.       int        len;
  1013.       int        i;
  1014. ! #ifdef S_SPLINT_S  /* splint can't handle array of pointers */
  1015. !     static char **spec_str;
  1016. !     static char *(nospec_str[])
  1017. ! #else
  1018. !     static char *(spec_str[])
  1019. ! #endif
  1020. !     = {
  1021.               "%",
  1022.   #define SPEC_PERC   0
  1023.               "#",
  1024. ***************
  1025. *** 9443,9451 ****
  1026.   # define SPEC_CLIENT 9
  1027.   #endif
  1028.       };
  1029. - #define SPEC_COUNT  (sizeof(spec_str) / sizeof(char *))
  1030.   
  1031. !     for (i = 0; i < SPEC_COUNT; ++i)
  1032.       {
  1033.       len = (int)STRLEN(spec_str[i]);
  1034.       if (STRNCMP(src, spec_str[i], len) == 0)
  1035. --- 9449,9456 ----
  1036.   # define SPEC_CLIENT 9
  1037.   #endif
  1038.       };
  1039.   
  1040. !     for (i = 0; i < (int)(sizeof(spec_str) / sizeof(char *)); ++i)
  1041.       {
  1042.       len = (int)STRLEN(spec_str[i]);
  1043.       if (STRNCMP(src, spec_str[i], len) == 0)
  1044. ***************
  1045. *** 9796,9802 ****
  1046.       }
  1047.   
  1048.       /* allocate memory */
  1049. !     retval = alloc(len + 1);
  1050.       if (retval == NULL)
  1051.           break;
  1052.       }
  1053. --- 9801,9807 ----
  1054.       }
  1055.   
  1056.       /* allocate memory */
  1057. !     retval = alloc((unsigned)len + 1);
  1058.       if (retval == NULL)
  1059.           break;
  1060.       }
  1061. *** ../vim-7.2.168/src/proto/ex_cmds.pro    2009-04-29 18:44:38.000000000 +0200
  1062. --- src/proto/ex_cmds.pro    2009-05-13 15:53:39.000000000 +0200
  1063. ***************
  1064. *** 9,15 ****
  1065.   void do_bang __ARGS((int addr_count, exarg_T *eap, int forceit, int do_in, int do_out));
  1066.   void do_shell __ARGS((char_u *cmd, int flags));
  1067.   char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp));
  1068. ! void append_redir __ARGS((char_u *buf, char_u *opt, char_u *fname));
  1069.   int viminfo_error __ARGS((char *errnum, char *message, char_u *line));
  1070.   int read_viminfo __ARGS((char_u *file, int flags));
  1071.   void write_viminfo __ARGS((char_u *file, int forceit));
  1072. --- 9,15 ----
  1073.   void do_bang __ARGS((int addr_count, exarg_T *eap, int forceit, int do_in, int do_out));
  1074.   void do_shell __ARGS((char_u *cmd, int flags));
  1075.   char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp));
  1076. ! void append_redir __ARGS((char_u *buf, int buflen, char_u *opt, char_u *fname));
  1077.   int viminfo_error __ARGS((char *errnum, char *message, char_u *line));
  1078.   int read_viminfo __ARGS((char_u *file, int flags));
  1079.   void write_viminfo __ARGS((char_u *file, int forceit));
  1080. *** ../vim-7.2.168/src/proto/spell.pro    2007-05-05 19:19:19.000000000 +0200
  1081. --- src/proto/spell.pro    2009-05-13 16:43:13.000000000 +0200
  1082. ***************
  1083. *** 22,26 ****
  1084.   char_u *spell_to_word_end __ARGS((char_u *start, buf_T *buf));
  1085.   int spell_word_start __ARGS((int startcol));
  1086.   void spell_expand_check_cap __ARGS((colnr_T col));
  1087. ! int expand_spelling __ARGS((linenr_T lnum, int col, char_u *pat, char_u ***matchp));
  1088.   /* vim: set ft=c : */
  1089. --- 22,26 ----
  1090.   char_u *spell_to_word_end __ARGS((char_u *start, buf_T *buf));
  1091.   int spell_word_start __ARGS((int startcol));
  1092.   void spell_expand_check_cap __ARGS((colnr_T col));
  1093. ! int expand_spelling __ARGS((linenr_T lnum, char_u *pat, char_u ***matchp));
  1094.   /* vim: set ft=c : */
  1095. *** ../vim-7.2.168/src/quickfix.c    2009-04-29 11:49:57.000000000 +0200
  1096. --- src/quickfix.c    2009-05-13 15:53:18.000000000 +0200
  1097. ***************
  1098. *** 2774,2780 ****
  1099.       sprintf((char *)cmd, "%s%s%s", (char *)p_shq, (char *)eap->arg,
  1100.                                      (char *)p_shq);
  1101.       if (*p_sp != NUL)
  1102. !     append_redir(cmd, p_sp, fname);
  1103.       /*
  1104.        * Output a newline if there's something else than the :make command that
  1105.        * was typed (in which case the cursor is in column 0).
  1106. --- 2774,2780 ----
  1107.       sprintf((char *)cmd, "%s%s%s", (char *)p_shq, (char *)eap->arg,
  1108.                                      (char *)p_shq);
  1109.       if (*p_sp != NUL)
  1110. !     append_redir(cmd, len, p_sp, fname);
  1111.       /*
  1112.        * Output a newline if there's something else than the :make command that
  1113.        * was typed (in which case the cursor is in column 0).
  1114. *** ../vim-7.2.168/src/spell.c    2009-02-11 17:57:43.000000000 +0100
  1115. --- src/spell.c    2009-05-13 16:31:15.000000000 +0200
  1116. ***************
  1117. *** 16151,16161 ****
  1118.    * Returns the number of matches.  The matches are in "matchp[]", array of
  1119.    * allocated strings.
  1120.    */
  1121. - /*ARGSUSED*/
  1122.       int
  1123. ! expand_spelling(lnum, col, pat, matchp)
  1124.       linenr_T    lnum;
  1125. -     int        col;
  1126.       char_u    *pat;
  1127.       char_u    ***matchp;
  1128.   {
  1129. --- 16151,16159 ----
  1130.    * Returns the number of matches.  The matches are in "matchp[]", array of
  1131.    * allocated strings.
  1132.    */
  1133.       int
  1134. ! expand_spelling(lnum, pat, matchp)
  1135.       linenr_T    lnum;
  1136.       char_u    *pat;
  1137.       char_u    ***matchp;
  1138.   {
  1139. *** ../vim-7.2.168/src/structs.h    2009-05-13 12:46:36.000000000 +0200
  1140. --- src/structs.h    2009-05-13 16:45:51.000000000 +0200
  1141. ***************
  1142. *** 16,22 ****
  1143.    */
  1144.   #if defined(SASC) && SASC < 658
  1145.   typedef long        linenr_T;
  1146. ! typedef unsigned    colnr_T;
  1147.   typedef unsigned short    short_u;
  1148.   #endif
  1149.   
  1150. --- 16,22 ----
  1151.    */
  1152.   #if defined(SASC) && SASC < 658
  1153.   typedef long        linenr_T;
  1154. ! typedef int        colnr_T;
  1155.   typedef unsigned short    short_u;
  1156.   #endif
  1157.   
  1158. *** ../vim-7.2.168/src/term.h    2005-03-16 10:53:56.000000000 +0100
  1159. --- src/term.h    2009-05-13 17:27:41.000000000 +0200
  1160. ***************
  1161. *** 96,102 ****
  1162. --- 96,106 ----
  1163.    * - there should be code in term.c to obtain the value from the termcap
  1164.    */
  1165.   
  1166. + #ifdef S_SPLINT_S  /* splint doesn't understand array of pointers */
  1167. + extern char_u **term_strings;    /* current terminal strings */
  1168. + #else
  1169.   extern char_u *(term_strings[]);    /* current terminal strings */
  1170. + #endif
  1171.   
  1172.   /*
  1173.    * strings used for terminal
  1174. *** ../vim-7.2.168/src/vim.h    2009-04-29 18:44:38.000000000 +0200
  1175. --- src/vim.h    2009-05-13 16:45:39.000000000 +0200
  1176. ***************
  1177. *** 1460,1467 ****
  1178.   # define PERROR(msg)            perror(msg)
  1179.   #endif
  1180.   
  1181. ! typedef long        linenr_T;        /* line number type */
  1182. ! typedef unsigned    colnr_T;        /* column number type */
  1183.   typedef unsigned short disptick_T;    /* display tick type */
  1184.   
  1185.   #define MAXLNUM (0x7fffffffL)        /* maximum (invalid) line number */
  1186. --- 1460,1467 ----
  1187.   # define PERROR(msg)            perror(msg)
  1188.   #endif
  1189.   
  1190. ! typedef long    linenr_T;        /* line number type */
  1191. ! typedef int    colnr_T;        /* column number type */
  1192.   typedef unsigned short disptick_T;    /* display tick type */
  1193.   
  1194.   #define MAXLNUM (0x7fffffffL)        /* maximum (invalid) line number */
  1195. *** ../vim-7.2.168/src/version.c    2009-05-13 14:48:55.000000000 +0200
  1196. --- src/version.c    2009-05-13 18:44:28.000000000 +0200
  1197. ***************
  1198. *** 678,679 ****
  1199. --- 678,681 ----
  1200.   {   /* Add new patch number below this line */
  1201. + /**/
  1202. +     169,
  1203.   /**/
  1204.  
  1205. -- 
  1206. Females are strictly forbidden to appear unshaven in public.
  1207.         [real standing law in New Mexico, United States of America]
  1208.  
  1209.  /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
  1210. ///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
  1211. \\\        download, build and distribute -- http://www.A-A-P.org        ///
  1212.  \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
  1213.