Code Review
/
ric-plt
/
lib
/
rmr.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Address code analysis issues
[ric-plt/lib/rmr.git]
/
src
/
rmr
/
si
/
src
/
si95
/
sibldpoll.c
diff --git
a/src/rmr/si/src/si95/sibldpoll.c
b/src/rmr/si/src/si95/sibldpoll.c
index
6ad26ea
..
8181738
100644
(file)
--- 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 );
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 ) {
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 ) {
} 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;
}
}
}
}