Re: Fwd: some question on bundled libedit in mysql
Sveta Smirnova <[email protected]> Mon, 25 Feb 2013 23:41:45 +0200
| Newsgroups | gmane.comp.db.mysql.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi Xiaobing, On 02/25/2013 11:55 AM, xiaobing jiang wrote: > hi all: > No reply from jonathan.perkin, so post to the maillist. > > can some one explain to me? > > Thanks! > > > > ---------- Forwarded message ---------- > From: xiaobing jiang<[email protected]> > Date: Fri, Feb 22, 2013 at 3:52 PM > Subject: some question on bundled libedit in mysql > To: [email protected] > > > hi jonathan: > after read the README in source, I have some question about libedit. > in recently, we find a bug. when using bundled libedit, we can't > input the chinese using GBK. after debug, I find this code may be > cause the bug. > > protected int > terminal__putc(EditLine *el, Int c) > { > char buf[MB_LEN_MAX +1]; > ssize_t i; > mbstate_t state; > > memset(&state, 0, sizeof(mbstate_t)); > if (c == (Int)MB_FILL_CHAR) > return 0; > i = ct_encode_char(buf, (size_t)MB_CUR_MAX, c,&state); // this > should be: ct_encode_char(buf, (size_t)MB_LEN_MAX, c,&state); > if (i<= 0) > return (int)i; > buf[i] = '\0'; > return fputs(buf, el->el_outfile); > } > > after change the code, I can fix the bug. and I find upstream also > using MB_LEN_MAX. > > http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libedit/terminal.c > > protected int > terminal__putc(EditLine *el, Int c) > { > char buf[MB_LEN_MAX +1]; > ssize_t i; > if (c == (Int)MB_FILL_CHAR) > return 0; > i = ct_encode_char(buf, (size_t)MB_LEN_MAX, c); > if (i<= 0) > return (int)i; > buf[i] = '\0'; > return fputs(buf, el->el_outfile); > } > > so the merge from upstream may be wrong. > > > And this bug may be the same > http://bugs.mysql.com/bug.php?id=23097 Since this old bug is supposed to be fixed now, please, open new one with repeatable test case of your problem with GBK character set. Thank you! Sveta Smirnova. > > > and why mysql5.6 remove the bundled readline? I think readline is used > more than libedit. > and when using system readline, why perfer libedit to readline ? look > at cmake/readline.cmake. FIND_SYSTEM_LIBEDIT(edit) -> > FIND_SYSTEM_LIBEDIT(readline) > > > > thanks! > xiaobing jiang > -- MySQL Internals Mailing List For list archives: http://lists.mysql.com/internals To unsubscribe: http://lists.mysql.com/internals