X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Frmr%2Fsi%2Fsrc%2Fsi95%2Fsibldpoll.c;h=81817383694559da25b019650f5f2ad5ed211321;hb=280477fab59b789d924830e1a50dc9d2656915af;hp=6ad26ea8b0d6013acd4e3a40782e0226e585a622;hpb=bc3de17c3b959fcc6a5ba42f5d3b09402bf89687;p=ric-plt%2Flib%2Frmr.git diff --git a/src/rmr/si/src/si95/sibldpoll.c b/src/rmr/si/src/si95/sibldpoll.c index 6ad26ea..8181738 100644 --- a/src/rmr/si/src/si95/sibldpoll.c +++ b/src/rmr/si/src/si95/sibldpoll.c @@ -49,10 +49,15 @@ extern void SIbldpoll( struct ginfo_blk* gptr ) { FD_ZERO( &gptr->writefds ); FD_ZERO( &gptr->execpfds ); - for( tpptr = gptr->tplist; tpptr != NULL; tpptr = nextb ) { - nextb = tpptr->next; + tpptr = gptr->tplist; + while( tpptr != NULL ) { + nextb = tpptr->next; // point past allowing for a delete + if( tpptr->flags & TPF_DELETE ) { - SIterm( gptr, tpptr ); + if( tpptr->fd >= 0 ) { // wasn't closed for some reason + SIterm( gptr, tpptr ); + } + SIrm_tpb( gptr, tpptr ); // safe to remove the block from the list in this thread } else { if( tpptr->fd >= 0 ) { // if valid file descriptor if( tpptr->fd >= gptr->fdcount ) { @@ -70,5 +75,7 @@ extern void SIbldpoll( struct ginfo_blk* gptr ) { } } } + + tpptr = nextb; } }