Patch 7.3.594
Problem:    The X command server doesn't work perfectly. It sends an empty
            reply for as-keys requests.
Solution:   Remove duplicate ga_init2(). Do not send a reply for as-keys
            requests. (Brian Burns)
Files:      src/if_xcmdsrv.c


*** ../vim-7.3.593/src/if_xcmdsrv.c     2010-08-15 21:57:27.000000000 +0200
--- src/if_xcmdsrv.c    2012-07-10 14:15:59.000000000 +0200
***************
*** 655,661 ****
        if (SendInit(dpy) < 0)
            return NULL;
      }
-     ga_init2(&ga, 1, 100);
  
      /*
       * Read the registry property.
--- 655,660 ----
***************
*** 1198,1206 ****
        if ((*p == 'c' || *p == 'k') && (p[1] == 0))
        {
            Window      resWindow;
!           char_u      *name, *script, *serial, *end, *res;
            Bool        asKeys = *p == 'k';
-           garray_T    reply;
            char_u      *enc;
  
            /*
--- 1197,1204 ----
        if ((*p == 'c' || *p == 'k') && (p[1] == 0))
        {
            Window      resWindow;
!           char_u      *name, *script, *serial, *end;
            Bool        asKeys = *p == 'k';
            char_u      *enc;
  
            /*
***************
*** 1256,1305 ****
            if (script == NULL || name == NULL)
                continue;
  
!           /*
!            * Initialize the result property, so that we're ready at any
!            * time if we need to return an error.
!            */
!           if (resWindow != None)
!           {
!               ga_init2(&reply, 1, 100);
  #ifdef FEAT_MBYTE
!               ga_grow(&reply, 50 + STRLEN(p_enc));
!               sprintf(reply.ga_data, "%cr%c-E %s%c-s %s%c-r ",
                                                   0, 0, p_enc, 0, serial, 0);
!               reply.ga_len = 14 + STRLEN(p_enc) + STRLEN(serial);
  #else
!               ga_grow(&reply, 50);
!               sprintf(reply.ga_data, "%cr%c-s %s%c-r ", 0, 0, serial, 0);
!               reply.ga_len = 10 + STRLEN(serial);
  #endif
!           }
!           res = NULL;
!           if (serverName != NULL && STRICMP(name, serverName) == 0)
!           {
!               script = serverConvert(enc, script, &tofree);
!               if (asKeys)
!                   server_to_input_buf(script);
!               else
!                   res = eval_client_expr_to_string(script);
!               vim_free(tofree);
!           }
!           if (resWindow != None)
!           {
!               if (res != NULL)
!                   ga_concat(&reply, res);
!               else if (asKeys == 0)
!               {
!                   ga_concat(&reply, (char_u *)_(e_invexprmsg));
!                   ga_append(&reply, 0);
!                   ga_concat(&reply, (char_u *)"-c 1");
!               }
!               ga_append(&reply, NUL);
!               (void)AppendPropCarefully(dpy, resWindow, commProperty,
!                                          reply.ga_data, reply.ga_len);
!               ga_clear(&reply);
!           }
!           vim_free(res);
        }
        else if (*p == 'r' && p[1] == 0)
        {
--- 1254,1305 ----
            if (script == NULL || name == NULL)
                continue;
  
!             if (serverName != NULL && STRICMP(name, serverName) == 0)
!             {
!                 script = serverConvert(enc, script, &tofree);
!                 if (asKeys)
!                     server_to_input_buf(script);
!                 else
!                 {
!                     char_u      *res;
! 
!                     res = eval_client_expr_to_string(script);
!                   if (resWindow != None)
!                   {
!                       garray_T    reply;
! 
!                       /* Initialize the result property. */
!                       ga_init2(&reply, 1, 100);
  #ifdef FEAT_MBYTE
!                       ga_grow(&reply, 50 + STRLEN(p_enc));
!                       sprintf(reply.ga_data, "%cr%c-E %s%c-s %s%c-r ",
                                                   0, 0, p_enc, 0, serial, 0);
!                       reply.ga_len = 14 + STRLEN(p_enc) + STRLEN(serial);
  #else
!                       ga_grow(&reply, 50);
!                       sprintf(reply.ga_data, "%cr%c-s %s%c-r ",
!                                                            0, 0, serial, 0);
!                       reply.ga_len = 10 + STRLEN(serial);
  #endif
! 
!                       /* Evaluate the expression and return the result. */
!                       if (res != NULL)
!                           ga_concat(&reply, res);
!                       else
!                       {
!                           ga_concat(&reply, (char_u *)_(e_invexprmsg));
!                           ga_append(&reply, 0);
!                           ga_concat(&reply, (char_u *)"-c 1");
!                       }
!                       ga_append(&reply, NUL);
!                       (void)AppendPropCarefully(dpy, resWindow, commProperty,
!                                                reply.ga_data, reply.ga_len);
!                       ga_clear(&reply);
!                   }
!                     vim_free(res);
!                 }
!                 vim_free(tofree);
!             }
        }
        else if (*p == 'r' && p[1] == 0)
        {
*** ../vim-7.3.593/src/version.c        2012-07-10 13:41:09.000000000 +0200
--- src/version.c       2012-07-10 14:17:50.000000000 +0200
***************
*** 716,717 ****
--- 716,719 ----
  {   /* Add new patch number below this line */
+ /**/
+     594,
  /**/

-- 
A meeting is an event at which the minutes are kept and the hours are lost.

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