From 164e403a974165af103fa072d0f14e2e256153be Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Tue, 17 Jun 2008 21:20:42 +0200 Subject: MLKDynamicContext#+initialize: Fix various sources of crashes. --- MLKSymbol.m | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'MLKSymbol.m') diff --git a/MLKSymbol.m b/MLKSymbol.m index 1cab004..73d418a 100644 --- a/MLKSymbol.m +++ b/MLKSymbol.m @@ -27,9 +27,19 @@ self = [super init]; ASSIGN (name, aName); ASSIGN (homePackage, aPackage); + real_identity = nil; return self; } +-(id) copyWithZone:(NSZone *)zone +{ + MLKSymbol *copy = [MLKSymbol allocWithZone:zone]; + ASSIGN (copy->name, name); + ASSIGN (copy->homePackage, homePackage); + ASSIGN (copy->real_identity, self); + return copy; +} + -(NSString *) name { return name; @@ -53,6 +63,22 @@ return [NSString stringWithFormat:@"|%@|", name]; } +-(BOOL) isEqual:(id)object +{ + if (object == self) + return YES; + + if (!([object isKindOfClass:[MLKSymbol class]])) + return NO; + + return ((((MLKSymbol *)object)->real_identity + ? ((MLKSymbol *)object)->real_identity + : (MLKSymbol *)object) + == ((self->real_identity != nil + ? self->real_identity + : self))); +} + -(void) dealloc { RELEASE (name); -- cgit v1.2.3