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

Patch 6.3.026

Expand Messages
  • Bram Moolenaar
    Patch 6.3.026 Problem: When ~/.vim/after/syntax/syncolor.vim contains a command that reloads the colors an enless loop and/or a crash may occur. Solution:
    Message 1 of 1 , Sep 13, 2004
    • 0 Attachment
      Patch 6.3.026
      Problem: When ~/.vim/after/syntax/syncolor.vim contains a command that
      reloads the colors an enless loop and/or a crash may occur.
      Solution: Only free the old value of an option when it was originally
      allocated. Limit recursiveness of init_highlight() to 5 levels.
      Files: src/option.c, src/syntax.c


      *** ../vim-6.3.025/src/option.c Thu Aug 26 16:01:15 2004
      --- src/option.c Mon Sep 13 15:42:46 2004
      ***************
      *** 4597,4602 ****
      --- 4597,4603 ----
      char_u *s, *p;
      int did_chartab = FALSE;
      char_u **gvarp;
      + int free_oldval = (options[opt_idx].flags & P_ALLOCED);

      /* Get the global option to compare with, otherwise we would have to check
      * two values for all local options. */
      ***************
      *** 5729,5736 ****
      #endif
      /*
      * Free string options that are in allocated memory.
      */
      ! if (options[opt_idx].flags & P_ALLOCED)
      free_string_option(oldval);
      if (new_value_alloced)
      options[opt_idx].flags |= P_ALLOCED;
      --- 5730,5739 ----
      #endif
      /*
      * Free string options that are in allocated memory.
      + * Use "free_oldval", because recursiveness may change the flags under
      + * our fingers (esp. init_highlight()).
      */
      ! if (free_oldval)
      free_string_option(oldval);
      if (new_value_alloced)
      options[opt_idx].flags |= P_ALLOCED;
      *** ../vim-6.3.025/src/syntax.c Wed Jun 9 14:56:25 2004
      --- src/syntax.c Mon Sep 13 15:44:04 2004
      ***************
      *** 6016,6022 ****
      * If syntax highlighting is enabled load the highlighting for it.
      */
      if (get_var_value((char_u *)"g:syntax_on") != NULL)
      ! (void)cmd_runtime((char_u *)"syntax/syncolor.vim", TRUE);
      #endif
      }

      --- 6016,6033 ----
      * If syntax highlighting is enabled load the highlighting for it.
      */
      if (get_var_value((char_u *)"g:syntax_on") != NULL)
      ! {
      ! static int recursive = 0;
      !
      ! if (recursive >= 5)
      ! EMSG(_("E679: recursive loop loading syncolor.vim"));
      ! else
      ! {
      ! ++recursive;
      ! (void)cmd_runtime((char_u *)"syntax/syncolor.vim", TRUE);
      ! --recursive;
      ! }
      ! }
      #endif
      }

      *** ../vim-6.3.025/src/version.c Sun Sep 5 20:53:04 2004
      --- src/version.c Mon Sep 13 16:33:19 2004
      ***************
      *** 643,644 ****
      --- 643,646 ----
      { /* Add new patch number below this line */
      + /**/
      + 26,
      /**/

      --
      A special law prohibits unmarried women from parachuting on Sunday or she
      shall risk arrest, fine, and/or jailing.
      [real standing law in Florida, United States of America]

      /// Bram Moolenaar -- Bram@... -- http://www.Moolenaar.net \\\
      /// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
      \\\ Project leader for A-A-P -- http://www.A-A-P.org ///
      \\\ Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
    Your message has been successfully submitted and would be delivered to recipients shortly.