On Sun, Feb 07, 2021 at 14:26:47 +0100, Roland Illig wrote: > On 07.02.2021 05:25, Valery Ushakov wrote: > > What's wrong is that for addstr we call _cursesi_addwchar with a > > pointer to a dummy variable, but for addch we call it with a pointer > > to win->curx, so we first increment win->curx in the nested > > _cursesi_addwchar calls (for the spaces) and then we also increment it > > in the top-level _cursesi_addwchar in that loop. > > Thanks for this explanation, it seemed to provide all the details I > needed to fix it myself. I tried it but failed miserably since I > stumpled upon a dozen other bugs while trying to fix this one. > Therefore I first made the libcurses test framework a little more reliable. > > Could you perhaps fix this one? You know the code way better than I do, > with all the subtleties around aliasing and SYNCH_IN and SYNCH_OUT and > the various code paths that are taken by all the functions.
The change that introduced this problem was, I guess, trying to fix the other side of the real bug. Before that change, I guess, addch was advancing curx, but addstr was not: http://mail-index.netbsd.org/source-changes/2016/11/28/msg079394.html Fixing this properly requires more effort than I currently can afford to spare (I don't really know the curses code that well, I just did a few cleanups here and there). Cc'ing Brett. -uwe