Minor fix for invalidation error.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@13513 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
CaS 2002-04-19 17:22:49 +00:00
parent 381ed5d34e
commit add42425be
2 changed files with 13 additions and 4 deletions

View file

@ -2,6 +2,9 @@
* Tools/gdnc.m: If given -NSHost specification for the current host, * Tools/gdnc.m: If given -NSHost specification for the current host,
ignore it and use the standard name. ignore it and use the standard name.
* Source/GSTcpPort.m: ([-invalidate]) call superclass implementation
at end ... so handles can find this port when they are destroying
themselves. Reverses last change I made to this.
2002-04-18 Richard Frith-Macdonald <rfm@gnu.org> 2002-04-18 Richard Frith-Macdonald <rfm@gnu.org>

View file

@ -1769,8 +1769,6 @@ static Class tcpPortClass;
NSArray *handleArray; NSArray *handleArray;
unsigned i; unsigned i;
[super invalidate]; // Avoid recursive calls
[tcpPortLock lock]; [tcpPortLock lock];
thePorts = NSMapGet(tcpPortMap, (void*)(gsaddr)portNum); thePorts = NSMapGet(tcpPortMap, (void*)(gsaddr)portNum);
if (thePorts != 0) if (thePorts != 0)
@ -1794,9 +1792,17 @@ static Class tcpPortClass;
[handle invalidate]; [handle invalidate];
} }
NSFreeMapTable(handles); /*
handles = 0; * We permit mutual recursive invalidation, so the handles map
* may already have been destroyed.
*/
if (handles != 0)
{
NSFreeMapTable(handles);
handles = 0;
}
} }
[super invalidate];
} }
DO_UNLOCK(myLock); DO_UNLOCK(myLock);
} }