> Hi ! > > I think we should write a test program using 'SLsmg_write_nchars' (or > SLsmg_printf) to check if the bug comes from mc or slang2... Any > volonteers?
I've tried to debug the problem a little.
Here is a bit delail of what is going on.
Running latest mc package in ru_RU_KOI8-R locale.
From function display() in mc scr/view.c :
...
mblen = 1;
mbbuf[0] = convert_to_display_c (c);
while (mblen < MB_LEN_MAX) {
int res;
memset (&mbs, 0, sizeof (mbs));
res = mbrtowc (&wc, mbbuf, mblen, &mbs);
...
When file contains capital cyrillic A, 'c' variable gets it (255 decimal),
convert_to_display_c() does not change it, and later mbrtowc() converts it
to (wchar_t) 1040
Later this 1040 is passed to view_add_character (view, wc), which is
defined to SLsmg_write_char() in UTF8 version of mc. And
SLsmg_write_char() puts garbage to slang screen buffer.
Then that garbage resides in slang screen buffer, until flushed to screen
in refresh().
I hope this information would be helpful to locate the bug.
Don't have more time now to continue debugging.
Things to check:
- is (whar_t)1040 correct value for capital cyrillic A?
- why SLsmg_write_char() puts garbage into buffer when gets (whar_t)1040?
Nikita
pgpnLjt5CTyYQ.pgp
Description: PGP signature

