diff --git a/src/poc/textplay.c b/src/poc/textplay.c index fcab355b2..01d33eafc 100644 --- a/src/poc/textplay.c +++ b/src/poc/textplay.c @@ -9,6 +9,7 @@ static const uint32_t NANOSEC = 1000000000ull / 60; // 60 cps static struct notcurses* init(void){ struct notcurses_options opts = { + .loglevel = NCLOGLEVEL_DEBUG, .margin_t = MARGIN, .margin_r = MARGIN, .margin_b = MARGIN, @@ -64,7 +65,7 @@ textplay(struct notcurses* nc, struct ncplane* tplane, struct ncvisual* ncv){ struct ncplane* stdn = notcurses_stdplane(nc); ncplane_set_scrolling(tplane, true); struct ncvisual_options vopts = { - .n = stdn, + .n = ncplane_dup(stdn, NULL), .scaling = NCSCALE_STRETCH, .blitter = NCBLIT_PIXEL, }; @@ -77,7 +78,6 @@ textplay(struct notcurses* nc, struct ncplane* tplane, struct ncvisual* ncv){ ncplane_erase(tplane); char* tmp = realloc(buf, buflen + 1); if(tmp == NULL){ - free(buf); return -1; } buf = tmp; @@ -85,15 +85,12 @@ textplay(struct notcurses* nc, struct ncplane* tplane, struct ncvisual* ncv){ buf[buflen++] = '\0'; int pt = ncplane_puttext(tplane, 0, NCALIGN_LEFT, buf, NULL); if(pt < 0){ - free(buf); - return -1; + goto err; } if(colorize(tplane)){ - free(buf); - return -1; + goto err; } if(notcurses_render(nc)){ - free(buf); return -1; } struct timespec ts = { @@ -105,7 +102,13 @@ textplay(struct notcurses* nc, struct ncplane* tplane, struct ncvisual* ncv){ ncvisual_decode(ncv); } } + ncplane_destroy(vopts.n); return 0; + +err: + ncplane_destroy(vopts.n); + free(buf); + return -1; } static struct ncplane*