Important Update:
- SelectCore: - Bug fix: only remove handle from read/write list if different function
This commit is contained in:
@@ -93,19 +93,22 @@ void CSelect::Add( int FD, bool Read, bool Write, CSelectableCore * Function )
|
||||
while (*Handle && ((*Handle)->FD != FD)) {
|
||||
Handle = &((*Handle)->Next);
|
||||
}
|
||||
if (*Handle) {
|
||||
// Old handle not yet removed, remove from read/write lists
|
||||
Remove( FD, true, true );
|
||||
}
|
||||
else {
|
||||
if (!*Handle) {
|
||||
// Create if not exist
|
||||
*Handle = (TSelectHandle*)malloc( sizeof(TSelectHandle) );
|
||||
memset( *Handle, 0, sizeof(TSelectHandle) );
|
||||
(*Handle)->FD = FD;
|
||||
}
|
||||
|
||||
// Set Parameters
|
||||
(*Handle)->Function = Function;
|
||||
// Set Parameters
|
||||
(*Handle)->FD = FD;
|
||||
(*Handle)->Function = Function;
|
||||
}
|
||||
else if ((*Handle)->Function != Function) {
|
||||
// Old handle for another function, not yet removed, remove from read/write lists
|
||||
Remove( FD, true, true );
|
||||
|
||||
// Overwrite Parameters
|
||||
(*Handle)->Function = Function;
|
||||
}
|
||||
|
||||
// Add Read select
|
||||
if (Read && !(*Handle)->Read) {
|
||||
|
||||
Reference in New Issue
Block a user