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 -- [email protected] -- 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    ///

-- 
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

Raspunde prin e-mail lui