]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.594 v7.3.594
authorBram Moolenaar <Bram@vim.org>
Tue, 10 Jul 2012 12:25:04 +0000 (14:25 +0200)
committerBram Moolenaar <Bram@vim.org>
Tue, 10 Jul 2012 12:25:04 +0000 (14:25 +0200)
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)

src/if_xcmdsrv.c
src/version.c

index 5412b35d44472c1b548cc4c3fb41973af0c2d8e8..dd2071db24fb6ca9ca9d65307374adec71879e0a 100644 (file)
@@ -655,7 +655,6 @@ serverGetVimNames(dpy)
        if (SendInit(dpy) < 0)
            return NULL;
     }
-    ga_init2(&ga, 1, 100);
 
     /*
      * Read the registry property.
@@ -1198,9 +1197,8 @@ serverEventProc(dpy, eventPtr)
        if ((*p == 'c' || *p == 'k') && (p[1] == 0))
        {
            Window      resWindow;
-           char_u      *name, *script, *serial, *end, *res;
+           char_u      *name, *script, *serial, *end;
            Bool        asKeys = *p == 'k';
-           garray_T    reply;
            char_u      *enc;
 
            /*
@@ -1256,50 +1254,52 @@ serverEventProc(dpy, eventPtr)
            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);
+            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 ",
+                       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);
+                       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);
+                       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);
+
+                       /* 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)
        {
index 1b04aed8d1659fb42045f20278758f93862aca90..0b9235d3e077702c0eebba29978c3b9c090f9932 100644 (file)
@@ -714,6 +714,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    594,
 /**/
     593,
 /**/