| To: vim_dev@googlegroups.com |
| Subject: Patch 7.3.594 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| 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 |
| |
| |
| |
| |
| |
| *** 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) |
| { |
| |
| |
| |
| *** 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 /// |