]> git.ipfire.org Git - ipfire-3.x.git/blobdiff - vim/patches/vim-7.3.056.patch0
Move all packages to root.
[ipfire-3.x.git] / vim / patches / vim-7.3.056.patch0
diff --git a/vim/patches/vim-7.3.056.patch0 b/vim/patches/vim-7.3.056.patch0
new file mode 100644 (file)
index 0000000..49c91b6
--- /dev/null
@@ -0,0 +1,542 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.056
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.056
+Problem:    "getline" argument in do_cmdline() shadows global.
+Solution:   Rename the argument.
+Files:     src/ex_docmd.c
+
+
+*** ../vim-7.3.055/src/ex_docmd.c      2010-11-10 18:59:50.000000000 +0100
+--- src/ex_docmd.c     2010-11-16 11:24:40.000000000 +0100
+***************
+*** 733,739 ****
+   * do_cmdline(): execute one Ex command line
+   *
+   * 1. Execute "cmdline" when it is not NULL.
+!  *    If "cmdline" is NULL, or more lines are needed, getline() is used.
+   * 2. Split up in parts separated with '|'.
+   *
+   * This function can be called recursively!
+--- 733,739 ----
+   * do_cmdline(): execute one Ex command line
+   *
+   * 1. Execute "cmdline" when it is not NULL.
+!  *    If "cmdline" is NULL, or more lines are needed, fgetline() is used.
+   * 2. Split up in parts separated with '|'.
+   *
+   * This function can be called recursively!
+***************
+*** 741,747 ****
+   * flags:
+   * DOCMD_VERBOSE  - The command will be included in the error message.
+   * DOCMD_NOWAIT   - Don't call wait_return() and friends.
+!  * DOCMD_REPEAT   - Repeat execution until getline() returns NULL.
+   * DOCMD_KEYTYPED - Don't reset KeyTyped.
+   * DOCMD_EXCRESET - Reset the exception environment (used for debugging).
+   * DOCMD_KEEPLINE - Store first typed line (for repeating with ".").
+--- 741,747 ----
+   * flags:
+   * DOCMD_VERBOSE  - The command will be included in the error message.
+   * DOCMD_NOWAIT   - Don't call wait_return() and friends.
+!  * DOCMD_REPEAT   - Repeat execution until fgetline() returns NULL.
+   * DOCMD_KEYTYPED - Don't reset KeyTyped.
+   * DOCMD_EXCRESET - Reset the exception environment (used for debugging).
+   * DOCMD_KEEPLINE - Store first typed line (for repeating with ".").
+***************
+*** 749,763 ****
+   * return FAIL if cmdline could not be executed, OK otherwise
+   */
+      int
+! do_cmdline(cmdline, getline, cookie, flags)
+      char_u   *cmdline;
+!     char_u   *(*getline) __ARGS((int, void *, int));
+!     void     *cookie;                /* argument for getline() */
+      int              flags;
+  {
+      char_u   *next_cmdline;          /* next cmd to execute */
+      char_u   *cmdline_copy = NULL;   /* copy of cmd line */
+!     int              used_getline = FALSE;   /* used "getline" to obtain command */
+      static int       recursive = 0;          /* recursive depth */
+      int              msg_didout_before_start = 0;
+      int              count = 0;              /* line number count */
+--- 749,763 ----
+   * return FAIL if cmdline could not be executed, OK otherwise
+   */
+      int
+! do_cmdline(cmdline, fgetline, cookie, flags)
+      char_u   *cmdline;
+!     char_u   *(*fgetline) __ARGS((int, void *, int));
+!     void     *cookie;                /* argument for fgetline() */
+      int              flags;
+  {
+      char_u   *next_cmdline;          /* next cmd to execute */
+      char_u   *cmdline_copy = NULL;   /* copy of cmd line */
+!     int              used_getline = FALSE;   /* used "fgetline" to obtain command */
+      static int       recursive = 0;          /* recursive depth */
+      int              msg_didout_before_start = 0;
+      int              count = 0;              /* line number count */
+***************
+*** 775,788 ****
+      struct msglist   **saved_msg_list = NULL;
+      struct msglist   *private_msg_list;
+  
+!     /* "getline" and "cookie" passed to do_one_cmd() */
+      char_u   *(*cmd_getline) __ARGS((int, void *, int));
+      void     *cmd_cookie;
+      struct loop_cookie cmd_loop_cookie;
+      void     *real_cookie;
+      int              getline_is_func;
+  #else
+! # define cmd_getline getline
+  # define cmd_cookie cookie
+  #endif
+      static int       call_depth = 0;         /* recursiveness */
+--- 775,788 ----
+      struct msglist   **saved_msg_list = NULL;
+      struct msglist   *private_msg_list;
+  
+!     /* "fgetline" and "cookie" passed to do_one_cmd() */
+      char_u   *(*cmd_getline) __ARGS((int, void *, int));
+      void     *cmd_cookie;
+      struct loop_cookie cmd_loop_cookie;
+      void     *real_cookie;
+      int              getline_is_func;
+  #else
+! # define cmd_getline fgetline
+  # define cmd_cookie cookie
+  #endif
+      static int       call_depth = 0;         /* recursiveness */
+***************
+*** 822,831 ****
+      cstack.cs_lflags = 0;
+      ga_init2(&lines_ga, (int)sizeof(wcmd_T), 10);
+  
+!     real_cookie = getline_cookie(getline, cookie);
+  
+      /* Inside a function use a higher nesting level. */
+!     getline_is_func = getline_equal(getline, cookie, get_func_line);
+      if (getline_is_func && ex_nesting_level == func_level(real_cookie))
+       ++ex_nesting_level;
+  
+--- 822,831 ----
+      cstack.cs_lflags = 0;
+      ga_init2(&lines_ga, (int)sizeof(wcmd_T), 10);
+  
+!     real_cookie = getline_cookie(fgetline, cookie);
+  
+      /* Inside a function use a higher nesting level. */
+!     getline_is_func = getline_equal(fgetline, cookie, get_func_line);
+      if (getline_is_func && ex_nesting_level == func_level(real_cookie))
+       ++ex_nesting_level;
+  
+***************
+*** 837,843 ****
+       breakpoint = func_breakpoint(real_cookie);
+       dbg_tick = func_dbg_tick(real_cookie);
+      }
+!     else if (getline_equal(getline, cookie, getsourceline))
+      {
+       fname = sourcing_name;
+       breakpoint = source_breakpoint(real_cookie);
+--- 837,843 ----
+       breakpoint = func_breakpoint(real_cookie);
+       dbg_tick = func_dbg_tick(real_cookie);
+      }
+!     else if (getline_equal(fgetline, cookie, getsourceline))
+      {
+       fname = sourcing_name;
+       breakpoint = source_breakpoint(real_cookie);
+***************
+*** 881,887 ****
+       * KeyTyped is only set when calling vgetc().  Reset it here when not
+       * calling vgetc() (sourced command lines).
+       */
+!     if (!(flags & DOCMD_KEYTYPED) && !getline_equal(getline, cookie, getexline))
+       KeyTyped = FALSE;
+  
+      /*
+--- 881,888 ----
+       * KeyTyped is only set when calling vgetc().  Reset it here when not
+       * calling vgetc() (sourced command lines).
+       */
+!     if (!(flags & DOCMD_KEYTYPED)
+!                             && !getline_equal(fgetline, cookie, getexline))
+       KeyTyped = FALSE;
+  
+      /*
+***************
+*** 894,900 ****
+      do
+      {
+  #ifdef FEAT_EVAL
+!      getline_is_func = getline_equal(getline, cookie, get_func_line);
+  #endif
+  
+       /* stop skipping cmds for an error msg after all endif/while/for */
+--- 895,901 ----
+      do
+      {
+  #ifdef FEAT_EVAL
+!      getline_is_func = getline_equal(fgetline, cookie, get_func_line);
+  #endif
+  
+       /* stop skipping cmds for an error msg after all endif/while/for */
+***************
+*** 909,915 ****
+  
+       /*
+        * 1. If repeating a line in a loop, get a line from lines_ga.
+!       * 2. If no line given: Get an allocated line with getline().
+        * 3. If a line is given: Make a copy, so we can mess with it.
+        */
+  
+--- 910,916 ----
+  
+       /*
+        * 1. If repeating a line in a loop, get a line from lines_ga.
+!       * 2. If no line given: Get an allocated line with fgetline().
+        * 3. If a line is given: Make a copy, so we can mess with it.
+        */
+  
+***************
+*** 938,949 ****
+           }
+  #ifdef FEAT_PROFILE
+           else if (do_profiling == PROF_YES
+!                           && getline_equal(getline, cookie, getsourceline))
+               script_line_end();
+  #endif
+  
+           /* Check if a sourced file hit a ":finish" command. */
+!          if (source_finished(getline, cookie))
+           {
+               retval = FAIL;
+               break;
+--- 939,950 ----
+           }
+  #ifdef FEAT_PROFILE
+           else if (do_profiling == PROF_YES
+!                          && getline_equal(fgetline, cookie, getsourceline))
+               script_line_end();
+  #endif
+  
+           /* Check if a sourced file hit a ":finish" command. */
+!          if (source_finished(fgetline, cookie))
+           {
+               retval = FAIL;
+               break;
+***************
+*** 954,960 ****
+                                                  && *dbg_tick != debug_tick)
+           {
+               *breakpoint = dbg_find_breakpoint(
+!                              getline_equal(getline, cookie, getsourceline),
+                                                       fname, sourcing_lnum);
+               *dbg_tick = debug_tick;
+           }
+--- 955,961 ----
+                                                  && *dbg_tick != debug_tick)
+           {
+               *breakpoint = dbg_find_breakpoint(
+!                              getline_equal(fgetline, cookie, getsourceline),
+                                                       fname, sourcing_lnum);
+               *dbg_tick = debug_tick;
+           }
+***************
+*** 969,975 ****
+               dbg_breakpoint(fname, sourcing_lnum);
+               /* Find next breakpoint. */
+               *breakpoint = dbg_find_breakpoint(
+!                              getline_equal(getline, cookie, getsourceline),
+                                                       fname, sourcing_lnum);
+               *dbg_tick = debug_tick;
+           }
+--- 970,976 ----
+               dbg_breakpoint(fname, sourcing_lnum);
+               /* Find next breakpoint. */
+               *breakpoint = dbg_find_breakpoint(
+!                             getline_equal(fgetline, cookie, getsourceline),
+                                                       fname, sourcing_lnum);
+               *dbg_tick = debug_tick;
+           }
+***************
+*** 978,984 ****
+           {
+               if (getline_is_func)
+                   func_line_start(real_cookie);
+!              else if (getline_equal(getline, cookie, getsourceline))
+                   script_line_start();
+           }
+  # endif
+--- 979,985 ----
+           {
+               if (getline_is_func)
+                   func_line_start(real_cookie);
+!              else if (getline_equal(fgetline, cookie, getsourceline))
+                   script_line_start();
+           }
+  # endif
+***************
+*** 987,993 ****
+       if (cstack.cs_looplevel > 0)
+       {
+           /* Inside a while/for loop we need to store the lines and use them
+!           * again.  Pass a different "getline" function to do_one_cmd()
+            * below, so that it stores lines in or reads them from
+            * "lines_ga".  Makes it possible to define a function inside a
+            * while/for loop. */
+--- 988,994 ----
+       if (cstack.cs_looplevel > 0)
+       {
+           /* Inside a while/for loop we need to store the lines and use them
+!           * again.  Pass a different "fgetline" function to do_one_cmd()
+            * below, so that it stores lines in or reads them from
+            * "lines_ga".  Makes it possible to define a function inside a
+            * while/for loop. */
+***************
+*** 995,1021 ****
+           cmd_cookie = (void *)&cmd_loop_cookie;
+           cmd_loop_cookie.lines_gap = &lines_ga;
+           cmd_loop_cookie.current_line = current_line;
+!          cmd_loop_cookie.getline = getline;
+           cmd_loop_cookie.cookie = cookie;
+           cmd_loop_cookie.repeating = (current_line < lines_ga.ga_len);
+       }
+       else
+       {
+!          cmd_getline = getline;
+           cmd_cookie = cookie;
+       }
+  #endif
+  
+!      /* 2. If no line given, get an allocated line with getline(). */
+       if (next_cmdline == NULL)
+       {
+           /*
+            * Need to set msg_didout for the first line after an ":if",
+            * otherwise the ":if" will be overwritten.
+            */
+!          if (count == 1 && getline_equal(getline, cookie, getexline))
+               msg_didout = TRUE;
+!          if (getline == NULL || (next_cmdline = getline(':', cookie,
+  #ifdef FEAT_EVAL
+                   cstack.cs_idx < 0 ? 0 : (cstack.cs_idx + 1) * 2
+  #else
+--- 996,1022 ----
+           cmd_cookie = (void *)&cmd_loop_cookie;
+           cmd_loop_cookie.lines_gap = &lines_ga;
+           cmd_loop_cookie.current_line = current_line;
+!          cmd_loop_cookie.getline = fgetline;
+           cmd_loop_cookie.cookie = cookie;
+           cmd_loop_cookie.repeating = (current_line < lines_ga.ga_len);
+       }
+       else
+       {
+!          cmd_getline = fgetline;
+           cmd_cookie = cookie;
+       }
+  #endif
+  
+!      /* 2. If no line given, get an allocated line with fgetline(). */
+       if (next_cmdline == NULL)
+       {
+           /*
+            * Need to set msg_didout for the first line after an ":if",
+            * otherwise the ":if" will be overwritten.
+            */
+!          if (count == 1 && getline_equal(fgetline, cookie, getexline))
+               msg_didout = TRUE;
+!          if (fgetline == NULL || (next_cmdline = fgetline(':', cookie,
+  #ifdef FEAT_EVAL
+                   cstack.cs_idx < 0 ? 0 : (cstack.cs_idx + 1) * 2
+  #else
+***************
+*** 1142,1148 ****
+            * If the command was typed, remember it for the ':' register.
+            * Do this AFTER executing the command to make :@: work.
+            */
+!          if (getline_equal(getline, cookie, getexline)
+                                                 && new_last_cmdline != NULL)
+           {
+               vim_free(last_cmdline);
+--- 1143,1149 ----
+            * If the command was typed, remember it for the ':' register.
+            * Do this AFTER executing the command to make :@: work.
+            */
+!          if (getline_equal(fgetline, cookie, getexline)
+                                                 && new_last_cmdline != NULL)
+           {
+               vim_free(last_cmdline);
+***************
+*** 1163,1169 ****
+  #ifdef FEAT_EVAL
+       /* reset did_emsg for a function that is not aborted by an error */
+       if (did_emsg && !force_abort
+!              && getline_equal(getline, cookie, get_func_line)
+                                             && !func_has_abort(real_cookie))
+           did_emsg = FALSE;
+  
+--- 1164,1170 ----
+  #ifdef FEAT_EVAL
+       /* reset did_emsg for a function that is not aborted by an error */
+       if (did_emsg && !force_abort
+!              && getline_equal(fgetline, cookie, get_func_line)
+                                             && !func_has_abort(real_cookie))
+           did_emsg = FALSE;
+  
+***************
+*** 1202,1208 ****
+                   if (breakpoint != NULL)
+                   {
+                       *breakpoint = dbg_find_breakpoint(
+!                              getline_equal(getline, cookie, getsourceline),
+                                                                       fname,
+                          ((wcmd_T *)lines_ga.ga_data)[current_line].lnum-1);
+                       *dbg_tick = debug_tick;
+--- 1203,1209 ----
+                   if (breakpoint != NULL)
+                   {
+                       *breakpoint = dbg_find_breakpoint(
+!                             getline_equal(fgetline, cookie, getsourceline),
+                                                                       fname,
+                          ((wcmd_T *)lines_ga.ga_data)[current_line].lnum-1);
+                       *dbg_tick = debug_tick;
+***************
+*** 1296,1303 ****
+  #endif
+           )
+           && !(did_emsg && used_getline
+!                        && (getline_equal(getline, cookie, getexmodeline)
+!                              || getline_equal(getline, cookie, getexline)))
+           && (next_cmdline != NULL
+  #ifdef FEAT_EVAL
+                       || cstack.cs_idx >= 0
+--- 1297,1304 ----
+  #endif
+           )
+           && !(did_emsg && used_getline
+!                          && (getline_equal(fgetline, cookie, getexmodeline)
+!                             || getline_equal(fgetline, cookie, getexline)))
+           && (next_cmdline != NULL
+  #ifdef FEAT_EVAL
+                       || cstack.cs_idx >= 0
+***************
+*** 1316,1324 ****
+        * unclosed conditional.
+        */
+       if (!got_int && !did_throw
+!              && ((getline_equal(getline, cookie, getsourceline)
+!                      && !source_finished(getline, cookie))
+!                  || (getline_equal(getline, cookie, get_func_line)
+                                           && !func_has_ended(real_cookie))))
+       {
+           if (cstack.cs_flags[cstack.cs_idx] & CSF_TRY)
+--- 1317,1325 ----
+        * unclosed conditional.
+        */
+       if (!got_int && !did_throw
+!              && ((getline_equal(fgetline, cookie, getsourceline)
+!                      && !source_finished(fgetline, cookie))
+!                  || (getline_equal(fgetline, cookie, get_func_line)
+                                           && !func_has_ended(real_cookie))))
+       {
+           if (cstack.cs_flags[cstack.cs_idx] & CSF_TRY)
+***************
+*** 1354,1360 ****
+      /* If a missing ":endtry", ":endwhile", ":endfor", or ":endif" or a memory
+       * lack was reported above and the error message is to be converted to an
+       * exception, do this now after rewinding the cstack. */
+!     do_errthrow(&cstack, getline_equal(getline, cookie, get_func_line)
+                                 ? (char_u *)"endfunction" : (char_u *)NULL);
+  
+      if (trylevel == 0)
+--- 1355,1361 ----
+      /* If a missing ":endtry", ":endwhile", ":endfor", or ":endif" or a memory
+       * lack was reported above and the error message is to be converted to an
+       * exception, do this now after rewinding the cstack. */
+!     do_errthrow(&cstack, getline_equal(fgetline, cookie, get_func_line)
+                                 ? (char_u *)"endfunction" : (char_u *)NULL);
+  
+      if (trylevel == 0)
+***************
+*** 1449,1457 ****
+       */
+      if (did_throw)
+       need_rethrow = TRUE;
+!     if ((getline_equal(getline, cookie, getsourceline)
+               && ex_nesting_level > source_level(real_cookie))
+!          || (getline_equal(getline, cookie, get_func_line)
+               && ex_nesting_level > func_level(real_cookie) + 1))
+      {
+       if (!did_throw)
+--- 1450,1458 ----
+       */
+      if (did_throw)
+       need_rethrow = TRUE;
+!     if ((getline_equal(fgetline, cookie, getsourceline)
+               && ex_nesting_level > source_level(real_cookie))
+!          || (getline_equal(fgetline, cookie, get_func_line)
+               && ex_nesting_level > func_level(real_cookie) + 1))
+      {
+       if (!did_throw)
+***************
+*** 1460,1475 ****
+      else
+      {
+       /* When leaving a function, reduce nesting level. */
+!      if (getline_equal(getline, cookie, get_func_line))
+           --ex_nesting_level;
+       /*
+        * Go to debug mode when returning from a function in which we are
+        * single-stepping.
+        */
+!      if ((getline_equal(getline, cookie, getsourceline)
+!                  || getline_equal(getline, cookie, get_func_line))
+               && ex_nesting_level + 1 <= debug_break_level)
+!          do_debug(getline_equal(getline, cookie, getsourceline)
+                   ? (char_u *)_("End of sourced file")
+                   : (char_u *)_("End of function"));
+      }
+--- 1461,1476 ----
+      else
+      {
+       /* When leaving a function, reduce nesting level. */
+!      if (getline_equal(fgetline, cookie, get_func_line))
+           --ex_nesting_level;
+       /*
+        * Go to debug mode when returning from a function in which we are
+        * single-stepping.
+        */
+!      if ((getline_equal(fgetline, cookie, getsourceline)
+!                  || getline_equal(fgetline, cookie, get_func_line))
+               && ex_nesting_level + 1 <= debug_break_level)
+!          do_debug(getline_equal(fgetline, cookie, getsourceline)
+                   ? (char_u *)_("End of sourced file")
+                   : (char_u *)_("End of function"));
+      }
+*** ../vim-7.3.055/src/version.c       2010-11-16 11:28:33.000000000 +0100
+--- src/version.c      2010-11-16 11:27:09.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+  {   /* Add new patch number below this line */
++ /**/
++     56,
+  /**/
+
+-- 
+Lawmakers made it obligatory for everybody to take at least one bath
+each week -- on Saturday night.
+               [real standing law in Vermont, United States of America]
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\  an exciting new programming language -- http://www.Zimbu.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///