List:Internals« Previous MessageNext Message »
From:Sveta Smirnova Date:February 25 2013 9:41pm
Subject:Re: Fwd: some question on bundled libedit in mysql
View as plain text  
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<s7v7nislands@stripped>
> Date: Fri, Feb 22, 2013 at 3:52 PM
> Subject: some question on bundled libedit in mysql
> To: jonathan.perkin@stripped
>
>
> 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
>
Thread
Fwd: some question on bundled libedit in mysqlxiaobing jiang25 Feb
  • Re: [Maria-developers] Fwd: some question on bundled libedit in mysqlSergei Golubchik25 Feb
  • Re: Fwd: some question on bundled libedit in mysqlSveta Smirnova25 Feb
Re: [Maria-developers] Fwd: some question on bundled libedit in mysqlSergei Golubchik25 Feb