On Sun, Jan 29, 2023 at 10:54:52PM +0100, you wrote:
Hello cage,
Hi!!
[...]
I also tried to narrow down the source of the error, basically getting to the same conclusion, that it is a low-level cffi problem in accessing the alternate character set ACS used to draw the borders.
I also tried [...] I guess _something_ changed in the underlying C libraries, which are updated all the time, and code that worked for years now doesn't, a pretty scary thought.
It is, indeed! O_O
But after a helpful discussion in #sbcl, the cause and thankfully a solution was quickly found.
🎉🎉
For the sake of completeness, this is a minimal ncurses example, based on your test-menu, which triggers the bug without any of the library overhead except cffi:
[...]
As soon as the function is called at run time, as in
(defun main () (initscr) (addch (cffi:mem-aref (cffi:foreign-symbol-pointer "acs_map") :uint32 (char-code #\l))) (refresh) (getch) (endwin))
the error doesnt occur any more. So the fix for the whole library is just that one line in the acs function, which is the only place the acs_map C array is accessed. I'm going to push that +change in a minute, when you find time, please test and confirm that it also works for you.
I have tested both the example above and the original code i posted a couple of days ago, I can confirm both work like a charm! :)
Thanks for the report and the test case, it greatly accelerated the search.
Thanks to you for all your work!
Also I have learnt something new about sbcl and cffi! :))
Now after your patch i should be able to update tinmop and unlock the proposed updating of croatoan on guix (a kind person seems interested on working on packaging the library!).
for reference:
https://issues.guix.gnu.org/issue/60944
Bye! C.