To: vim_dev@googlegroups.com Subject: Patch 7.3.594 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ 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 -- 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 ///