In article <1507925951.56433.1479909932210.javamail.ngm...@webmail12.arcor-online.net>, Carsten Kunze <carsten.ku...@arcor.de> wrote: >Brett Lymn <bl...@internode.on.net> wrote: > >> On Mon, Nov 21, 2016 at 10:46:50PM +0100, Carsten Kunze wrote: >> > >> > I want to do further tests with new hints I got from Brett. If it doesn't >> work I'll try again to prepare a minimum example from scratch. >> > >> >> Just for the record, what I suggested was try a touchwin() or touch on >> the subwin lines in the parent window before doing the refresh on the >> parent. The subtlety with using subwin() is that the child window >> shares the data structures with the parent but updates on the subwin >> don't mark the parent lines for update. This sounds a bit >> counterintuitive but I think this was a deliberate ploy to push the >> logic of overlapping window refresh back to the application instead of >> building it into the library. > >I did use subwin() to save some bytes of memory since I don't use >stdscr directly. If I now have to use additional touchwin() subwin() >has performance drawbacks for me. It is fine how it is implemented >on NetBSD, but for my use case newwin() is now better suited. > >So I changed all subwin() to newwin(), now the situation is the other >way round: First tests don't show any curses issue, but now ncurses >is unusable if wide char text is displayed (but ncurses works fine on >OpenBSD and FreeBSD). This is OT here and would be a topic for the >pkgsrc list of course. > >But there is still one general issue with curses: > >When I use option -fsanitize=address with gcc (nb1 20160606) 5.4.0 >a curses program crashes with heap-buffer-overflow. > >This time I have a small test case: > >Makefile: > >LDADD= -lcurses > >a.out: main.o > $(CC) -fsanitize=address main.o $(LDADD) > >clean: > rm -f main.o a.out > >.c.o: > $(CC) -c $(CFLAGS) -fsanitize=address $< > >main.c: > >#include <curses.h> > >int >main() >{ > initscr(); > endwin(); > return 0; >}
I used this as the Makefile, and I can't reproduce it (current/amd64) $ cat Makefile LDFLAGS=-lcurses CFLAGS=-g -fsanitize=address all: main clean: rm -f main