From 4fb012a12d9d4e8f6bde07ac2a6dee4dd11b3033 Mon Sep 17 00:00:00 2001 From: nick black Date: Mon, 1 Jun 2020 10:03:04 -0400 Subject: [PATCH] ncreel_destroy(): use ncreel_del() directly #664 --- src/lib/reel.c | 7 ++----- src/ncreel/main.cpp | 34 ++++++++++++++++++++-------------- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/lib/reel.c b/src/lib/reel.c index 545e3e88d..07e6da8cf 100644 --- a/src/lib/reel.c +++ b/src/lib/reel.c @@ -744,12 +744,9 @@ int ncreel_del(ncreel* nr, struct nctablet* t){ int ncreel_destroy(ncreel* nreel){ int ret = 0; if(nreel){ - nctablet* t = nreel->tablets; - while(t){ - t->prev->next = NULL; - nctablet* tmp = t->next; + nctablet* t; + while( (t = nreel->tablets) ){ ncreel_del(nreel, t); - t = tmp; } ncplane_destroy(nreel->p); free(nreel); diff --git a/src/ncreel/main.cpp b/src/ncreel/main.cpp index f5c167fea..0a9928c8e 100644 --- a/src/ncreel/main.cpp +++ b/src/ncreel/main.cpp @@ -103,26 +103,19 @@ void parse_args(int argc, char** argv, struct notcurses_options* opts, opts->suppress_banner = true; } -int main(int argc, char** argv){ - if(setlocale(LC_ALL, "") == nullptr){ - return EXIT_FAILURE; - } - notcurses_options ncopts{}; - ncreel_options nopts{}; - parse_args(argc, argv, &ncopts, &nopts); - NotCurses nc(ncopts); +int runreels(NotCurses& nc, ncreel_options& nopts){ std::unique_ptr nstd(nc.get_stdplane()); int dimy, dimx; nstd->get_dim(&dimy, &dimx); auto n = std::make_shared(dimy - 1, dimx, 1, 0); if(!n){ - return EXIT_FAILURE; + return -1; } if(!n->set_fg_rgb(0xb1, 0x1b, 0xb1)){ - return EXIT_FAILURE; + return -1; } if(n->putstr(0, NCAlign::Center, "(a)dd (d)el (q)uit") <= 0){ - return EXIT_FAILURE; + return -1; } channels_set_fg(&nopts.focusedchan, 0xffffff); channels_set_bg(&nopts.focusedchan, 0x00c080); @@ -130,13 +123,13 @@ int main(int argc, char** argv){ nopts.toff = 3; std::shared_ptr nr(n->ncreel_create(&nopts)); if(!nr || !nc.render()){ - return EXIT_FAILURE; + return -1; } char32_t key; while((key = nc.getc(true)) != (char32_t)-1){ switch(key){ case 'q': - return !nc.stop() ? EXIT_FAILURE : EXIT_SUCCESS; + return 0; case 'a':{ TabletCtx* tctx = new TabletCtx(); nr->add(nullptr, nullptr, tabletfxn, tctx); @@ -158,5 +151,18 @@ int main(int argc, char** argv){ break; } } - return EXIT_FAILURE; + return -1; +} + +int main(int argc, char** argv){ + if(setlocale(LC_ALL, "") == nullptr){ + return EXIT_FAILURE; + } + notcurses_options ncopts{}; + ncreel_options nopts{}; + parse_args(argc, argv, &ncopts, &nopts); + NotCurses nc(ncopts); + int r = runreels(nc, nopts); + nc.stop(); + return r ? EXIT_FAILURE : EXIT_SUCCESS; }