proc/fileroller: don't call ncfdplane_destroy() from within callbacks

pull/555/head
nick black 4 years ago
parent ab2a57df1f
commit 6e0fd72e33
No known key found for this signature in database
GPG Key ID: 5F43400C21CBFACC

@ -31,7 +31,7 @@ eofcb(struct ncfdplane* ncfd, int nerrno, void* curry){
fddone = true;
pthread_mutex_unlock(&lock);
pthread_cond_signal(&cond);
return ncfdplane_destroy(ncfd);
return nerrno;
}
int main(int argc, char** argv){
@ -40,7 +40,6 @@ int main(int argc, char** argv){
opts.inhibit_alternate_screen = true;
struct notcurses* nc = notcurses_init(&opts, stdout);
struct ncplane* n = notcurses_stdplane(nc);
int ret = -1;
while(*++argv){
int fd = open(*argv, O_RDONLY|O_CLOEXEC);
if(fd < 0){
@ -59,7 +58,7 @@ int main(int argc, char** argv){
}
done:
if(notcurses_stop(nc) || ret){
if(notcurses_stop(nc)){
return EXIT_FAILURE;
}
return EXIT_SUCCESS;

@ -31,7 +31,7 @@ eofcb(struct ncfdplane* ncfd, int nerrno, void* curry){
fddone = true;
pthread_mutex_unlock(&lock);
pthread_cond_signal(&cond);
return ncfdplane_destroy(ncfd);
return nerrno;
}
int main(int argc, char** argv){
@ -47,17 +47,15 @@ int main(int argc, char** argv){
return EXIT_FAILURE;
}
struct ncplane* n = notcurses_stdplane(nc);
int ret = -1;
ncsubproc_options nopts = {};
struct ncsubproc* nsproc = ncsubproc_createvp(n, &nopts, *argv, argv, cb, eofcb);
pthread_mutex_lock(&lock);
while(!fddone){
pthread_cond_wait(&cond, &lock);
}
ret = 0;
pthread_mutex_unlock(&lock);
ncsubproc_destroy(nsproc);
if(notcurses_stop(nc) || ret){
if(notcurses_stop(nc)){
return EXIT_FAILURE;
}
return EXIT_SUCCESS;

Loading…
Cancel
Save