To: vim_dev@googlegroups.com Subject: Patch 7.4.1998 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.4.1998 Problem: When writing buffer lines to a job there is no NL to NUL conversion. Solution: Make it work symmetrical with writing lines from a job into a buffer. Files: src/channel.c, src/proto/channel.pro, src/netbeans.c *** ../vim-7.4.1997/src/channel.c 2016-06-27 21:10:28.148544550 +0200 --- src/channel.c 2016-07-07 20:34:30.485913884 +0200 *************** *** 1313,1326 **** char_u *line = ml_get_buf(buf, lnum, FALSE); int len = (int)STRLEN(line); char_u *p; /* Need to make a copy to be able to append a NL. */ if ((p = alloc(len + 2)) == NULL) return; memcpy((char *)p, (char *)line, len); p[len] = NL; p[len + 1] = NUL; ! channel_send(channel, PART_IN, p, "write_buf_line()"); vim_free(p); } --- 1313,1332 ---- char_u *line = ml_get_buf(buf, lnum, FALSE); int len = (int)STRLEN(line); char_u *p; + int i; /* Need to make a copy to be able to append a NL. */ if ((p = alloc(len + 2)) == NULL) return; memcpy((char *)p, (char *)line, len); + + for (i = 0; i < len; ++i) + if (p[i] == NL) + p[i] = NUL; + p[len] = NL; p[len + 1] = NUL; ! channel_send(channel, PART_IN, p, len + 1, "write_buf_line()"); vim_free(p); } *************** *** 2185,2191 **** { channel_send(channel, part == PART_SOCK ? PART_SOCK : PART_IN, ! json, (char *)cmd); vim_free(json); } } --- 2191,2197 ---- { channel_send(channel, part == PART_SOCK ? PART_SOCK : PART_IN, ! json, (int)STRLEN(json), (char *)cmd); vim_free(json); } } *************** *** 3380,3388 **** * Return FAIL or OK. */ int ! channel_send(channel_T *channel, int part, char_u *buf, char *fun) { - int len = (int)STRLEN(buf); int res; sock_T fd; --- 3386,3393 ---- * Return FAIL or OK. */ int ! channel_send(channel_T *channel, int part, char_u *buf, int len, char *fun) { int res; sock_T fd; *************** *** 3470,3476 **** opt->jo_callback, opt->jo_partial, id); } ! if (channel_send(channel, part_send, text, fun) == OK && opt->jo_callback == NULL) return channel; return NULL; --- 3475,3481 ---- opt->jo_callback, opt->jo_partial, id); } ! if (channel_send(channel, part_send, text, (int)STRLEN(text), fun) == OK && opt->jo_callback == NULL) return channel; return NULL; *** ../vim-7.4.1997/src/proto/channel.pro 2016-06-07 22:16:31.690333465 +0200 --- src/proto/channel.pro 2016-07-07 20:34:13.042176488 +0200 *************** *** 34,40 **** void common_channel_read(typval_T *argvars, typval_T *rettv, int raw); channel_T *channel_fd2channel(sock_T fd, int *partp); void channel_handle_events(void); ! int channel_send(channel_T *channel, int part, char_u *buf, char *fun); channel_T *send_common(typval_T *argvars, char_u *text, int id, int eval, jobopt_T *opt, char *fun, int *part_read); void ch_expr_common(typval_T *argvars, typval_T *rettv, int eval); void ch_raw_common(typval_T *argvars, typval_T *rettv, int eval); --- 34,40 ---- void common_channel_read(typval_T *argvars, typval_T *rettv, int raw); channel_T *channel_fd2channel(sock_T fd, int *partp); void channel_handle_events(void); ! int channel_send(channel_T *channel, int part, char_u *buf, int len, char *fun); channel_T *send_common(typval_T *argvars, char_u *text, int id, int eval, jobopt_T *opt, char *fun, int *part_read); void ch_expr_common(typval_T *argvars, typval_T *rettv, int eval); void ch_raw_common(typval_T *argvars, typval_T *rettv, int eval); *** ../vim-7.4.1997/src/netbeans.c 2016-07-01 17:17:13.290266761 +0200 --- src/netbeans.c 2016-07-07 20:33:54.454456314 +0200 *************** *** 765,771 **** nb_send(char *buf, char *fun) { if (nb_channel != NULL) ! channel_send(nb_channel, PART_SOCK, (char_u *)buf, fun); } /* --- 765,772 ---- nb_send(char *buf, char *fun) { if (nb_channel != NULL) ! channel_send(nb_channel, PART_SOCK, (char_u *)buf, ! (int)STRLEN(buf), fun); } /* *** ../vim-7.4.1997/src/version.c 2016-07-07 18:58:55.368713570 +0200 --- src/version.c 2016-07-07 20:44:13.125141617 +0200 *************** *** 760,761 **** --- 760,763 ---- { /* Add new patch number below this line */ + /**/ + 1998, /**/ -- Your fault: core dumped /// 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 ///