Loading ...
Sorry, an error occurred while loading the content.

Patch 7.2.439

Expand Messages
  • Bram Moolenaar
    Patch 7.2.439 Problem: Invalid memory access when doing thesaurus completion and infercase is set. Solution: Use the minimal length of completed word
    Message 1 of 1 , May 28, 2010
    • 0 Attachment
      Patch 7.2.439
      Problem: Invalid memory access when doing thesaurus completion and
      'infercase' is set.
      Solution: Use the minimal length of completed word and replacement.
      (Dominique Pelle)
      Files: src/edit.c


      *** ../vim-7.2.438/src/edit.c 2010-03-10 14:15:28.000000000 +0100
      --- src/edit.c 2010-05-28 21:20:29.000000000 +0200
      ***************
      *** 2164,2169 ****
      --- 2164,2170 ----
      int i, c;
      int actual_len; /* Take multi-byte characters */
      int actual_compl_length; /* into account. */
      + int min_len;
      int *wca; /* Wide character array. */
      int has_lower = FALSE;
      int was_letter = FALSE;
      ***************
      *** 2204,2209 ****
      --- 2205,2215 ----
      #endif
      actual_compl_length = compl_length;

      + /* "actual_len" may be smaller than "actual_compl_length" when using
      + * thesaurus, only use the minimum when comparing. */
      + min_len = actual_len < actual_compl_length
      + ? actual_len : actual_compl_length;
      +
      /* Allocate wide character array for the completion and fill it. */
      wca = (int *)alloc((unsigned)(actual_len * sizeof(int)));
      if (wca != NULL)
      ***************
      *** 2219,2225 ****

      /* Rule 1: Were any chars converted to lower? */
      p = compl_orig_text;
      ! for (i = 0; i < actual_compl_length; ++i)
      {
      #ifdef FEAT_MBYTE
      if (has_mbyte)
      --- 2225,2231 ----

      /* Rule 1: Were any chars converted to lower? */
      p = compl_orig_text;
      ! for (i = 0; i < min_len; ++i)
      {
      #ifdef FEAT_MBYTE
      if (has_mbyte)
      ***************
      *** 2247,2253 ****
      if (!has_lower)
      {
      p = compl_orig_text;
      ! for (i = 0; i < actual_compl_length; ++i)
      {
      #ifdef FEAT_MBYTE
      if (has_mbyte)
      --- 2253,2259 ----
      if (!has_lower)
      {
      p = compl_orig_text;
      ! for (i = 0; i < min_len; ++i)
      {
      #ifdef FEAT_MBYTE
      if (has_mbyte)
      ***************
      *** 2268,2274 ****

      /* Copy the original case of the part we typed. */
      p = compl_orig_text;
      ! for (i = 0; i < actual_compl_length; ++i)
      {
      #ifdef FEAT_MBYTE
      if (has_mbyte)
      --- 2274,2280 ----

      /* Copy the original case of the part we typed. */
      p = compl_orig_text;
      ! for (i = 0; i < min_len; ++i)
      {
      #ifdef FEAT_MBYTE
      if (has_mbyte)
      *** ../vim-7.2.438/src/version.c 2010-05-25 21:37:12.000000000 +0200
      --- src/version.c 2010-05-28 21:30:53.000000000 +0200
      ***************
      *** 683,684 ****
      --- 683,686 ----
      { /* Add new patch number below this line */
      + /**/
      + 439,
      /**/

      --
      Corduroy pillows: They're making headlines!

      /// Bram Moolenaar -- Bram@... -- 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 ///

      --
      You received this message from the "vim_dev" maillist.
      Do not top-post! Type your reply below the text you are replying to.
      For more information, visit http://www.vim.org/maillist.php
    Your message has been successfully submitted and would be delivered to recipients shortly.