Patch 8.1.1060
Problem:    MS-Windows: get_cmd_args() is no longer needed, get_cmd_argsW() is
            always used.
Solution:   Remove get_cmd_args(). (Ken Takata, closes #4171)
Files:      src/gui_w32.c, src/os_w32exe.c


*** ../vim-8.1.1059/src/gui_w32.c       2019-03-21 20:50:08.868741864 +0100
--- src/gui_w32.c       2019-03-27 21:56:47.457072295 +0100
***************
*** 3882,4032 ****
  }
  
  
- /*
-  * Get command line arguments.
-  * Use "prog" as the name of the program and "cmdline" as the arguments.
-  * Copy the arguments to allocated memory.
-  * Return the number of arguments (including program name).
-  * Return pointers to the arguments in "argvp".  Memory is allocated with
-  * malloc(), use free() instead of vim_free().
-  * Return pointer to buffer in "tofree".
-  * Returns zero when out of memory.
-  */
-     int
- get_cmd_args(char *prog, char *cmdline, char ***argvp, char **tofree)
- {
-     int               i;
-     char      *p;
-     char      *progp;
-     char      *pnew = NULL;
-     char      *newcmdline;
-     int               inquote;
-     int               argc;
-     char      **argv = NULL;
-     int               round;
- 
-     *tofree = NULL;
- 
-     /* Try using the Unicode version first, it takes care of conversion when
-      * 'encoding' is changed. */
-     argc = get_cmd_argsW(&argv);
-     if (argc != 0)
-       goto done;
- 
-     /* Handle the program name.  Remove the ".exe" extension, and find the 1st
-      * non-space. */
-     p = strrchr(prog, '.');
-     if (p != NULL)
-       *p = NUL;
-     for (progp = prog; *progp == ' '; ++progp)
-       ;
- 
-     /* The command line is copied to allocated memory, so that we can change
-      * it.  Add the size of the string, the separating NUL and a terminating
-      * NUL. */
-     newcmdline = malloc(STRLEN(cmdline) + STRLEN(progp) + 2);
-     if (newcmdline == NULL)
-       return 0;
- 
-     /*
-      * First round: count the number of arguments ("pnew" == NULL).
-      * Second round: produce the arguments.
-      */
-     for (round = 1; round <= 2; ++round)
-     {
-       /* First argument is the program name. */
-       if (pnew != NULL)
-       {
-           argv[0] = pnew;
-           strcpy(pnew, progp);
-           pnew += strlen(pnew);
-           *pnew++ = NUL;
-       }
- 
-       /*
-        * Isolate each argument and put it in argv[].
-        */
-       p = cmdline;
-       argc = 1;
-       while (*p != NUL)
-       {
-           inquote = FALSE;
-           if (pnew != NULL)
-               argv[argc] = pnew;
-           ++argc;
-           while (*p != NUL && (inquote || (*p != ' ' && *p != '\t')))
-           {
-               /* Backslashes are only special when followed by a double
-                * quote. */
-               i = (int)strspn(p, "\\");
-               if (p[i] == '"')
-               {
-                   /* Halve the number of backslashes. */
-                   if (i > 1 && pnew != NULL)
-                   {
-                       vim_memset(pnew, '\\', i / 2);
-                       pnew += i / 2;
-                   }
- 
-                   /* Even nr of backslashes toggles quoting, uneven copies
-                    * the double quote. */
-                   if ((i & 1) == 0)
-                       inquote = !inquote;
-                   else if (pnew != NULL)
-                       *pnew++ = '"';
-                   p += i + 1;
-               }
-               else if (i > 0)
-               {
-                   /* Copy span of backslashes unmodified. */
-                   if (pnew != NULL)
-                   {
-                       vim_memset(pnew, '\\', i);
-                       pnew += i;
-                   }
-                   p += i;
-               }
-               else
-               {
-                   if (pnew != NULL)
-                       *pnew++ = *p;
-                   /* Can't use mb_* functions, because 'encoding' is not
-                    * initialized yet here. */
-                   if (IsDBCSLeadByte(*p))
-                   {
-                       ++p;
-                       if (pnew != NULL)
-                           *pnew++ = *p;
-                   }
-                   ++p;
-               }
-           }
- 
-           if (pnew != NULL)
-               *pnew++ = NUL;
-           while (*p == ' ' || *p == '\t')
-               ++p;                /* advance until a non-space */
-       }
- 
-       if (round == 1)
-       {
-           argv = (char **)malloc((argc + 1) * sizeof(char *));
-           if (argv == NULL )
-           {
-               free(newcmdline);
-               return 0;                  /* malloc error */
-           }
-           pnew = newcmdline;
-           *tofree = newcmdline;
-       }
-     }
- 
- done:
-     argv[argc] = NULL;                /* NULL-terminated list */
-     *argvp = argv;
-     return argc;
- }
- 
  #ifdef FEAT_XPM_W32
  # include "xpm_w32.h"
  #endif
--- 3882,3887 ----
*** ../vim-8.1.1059/src/os_w32exe.c     2019-02-17 17:44:36.219875473 +0100
--- src/os_w32exe.c     2019-03-27 21:56:47.457072295 +0100
***************
*** 10,16 ****
  /*
   * Windows GUI: main program (EXE) entry point:
   *
!  * Ron Aaron <[email protected]> wrote this and  the DLL support code.
   */
  #include "vim.h"
  
--- 10,16 ----
  /*
   * Windows GUI: main program (EXE) entry point:
   *
!  * Ron Aaron <[email protected]> wrote this and the DLL support code.
   */
  #include "vim.h"
  
***************
*** 42,77 ****
  WinMain(
      HINSTANCE hInstance UNUSED,
      HINSTANCE hPrevInst UNUSED,
!     LPSTR     lpszCmdLine,
      int               nCmdShow UNUSED)
  {
      int               argc = 0;
!     char      **argv;
!     char      *tofree;
!     char      prog[256];
  #ifdef VIMDLL
      char      *p;
      HANDLE    hLib;
- #endif
  
      /* Ron: added full path name so that the $VIM variable will get set to our
       * startup path (so the .vimrc file can be found w/o a VIM env. var.) */
      GetModuleFileName(NULL, prog, 255);
  
!     argc = get_cmd_args(prog, (char *)lpszCmdLine, &argv, &tofree);
!     if (argc == 0)
!     {
!       MessageBox(0, "Could not allocate memory for command line.",
!                                                             "VIM Error", 0);
!       return 0;
!     }
! 
! #ifdef DYNAMIC_GETTEXT
      /* Initialize gettext library */
      dyn_libintl_init();
! #endif
  
- #ifdef VIMDLL
      // LoadLibrary - get name of dll to load in here:
      p = strrchr(prog, '\\');
      if (p != NULL)
--- 42,66 ----
  WinMain(
      HINSTANCE hInstance UNUSED,
      HINSTANCE hPrevInst UNUSED,
!     LPSTR     lpszCmdLine UNUSED,
      int               nCmdShow UNUSED)
  {
      int               argc = 0;
!     char      **argv = NULL;
  #ifdef VIMDLL
+     char      prog[256];
      char      *p;
      HANDLE    hLib;
  
      /* Ron: added full path name so that the $VIM variable will get set to our
       * startup path (so the .vimrc file can be found w/o a VIM env. var.) */
      GetModuleFileName(NULL, prog, 255);
  
! # ifdef DYNAMIC_GETTEXT
      /* Initialize gettext library */
      dyn_libintl_init();
! # endif
  
      // LoadLibrary - get name of dll to load in here:
      p = strrchr(prog, '\\');
      if (p != NULL)
***************
*** 127,135 ****
      FreeLibrary(hLib);
  errout:
  #endif
-     free(argv);
-     if (tofree != NULL)
-       free(tofree);
      free_cmd_argsW();
  
      return 0;
--- 116,121 ----
*** ../vim-8.1.1059/src/version.c       2019-03-27 21:49:10.761396675 +0100
--- src/version.c       2019-03-27 21:58:01.508417951 +0100
***************
*** 777,778 ****
--- 777,780 ----
  {   /* Add new patch number below this line */
+ /**/
+     1060,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
133. You communicate with people on other continents more than you
     do with your own neighbors.

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

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui