diff options
-rw-r--r-- | MLKSymbol.h | 1 | ||||
-rw-r--r-- | MLKSymbol.m | 13 |
2 files changed, 13 insertions, 1 deletions
diff --git a/MLKSymbol.h b/MLKSymbol.h index 3aa2a1e..3cc9859 100644 --- a/MLKSymbol.h +++ b/MLKSymbol.h @@ -52,6 +52,7 @@ // copying. (The hack is called real_identity and it's an ivar of this // class.) See the comment above copyWithZone: for why it even exists. -(BOOL) isEqual:(id)object; +-(unsigned) hash; -(void) dealloc; @end diff --git a/MLKSymbol.m b/MLKSymbol.m index 73d418a..8a087cf 100644 --- a/MLKSymbol.m +++ b/MLKSymbol.m @@ -36,7 +36,10 @@ MLKSymbol *copy = [MLKSymbol allocWithZone:zone]; ASSIGN (copy->name, name); ASSIGN (copy->homePackage, homePackage); - ASSIGN (copy->real_identity, self); + if (real_identity) + ASSIGN (copy->real_identity, real_identity); + else + ASSIGN (copy->real_identity, self); return copy; } @@ -79,6 +82,14 @@ : self))); } +-(unsigned) hash +{ + if (real_identity) + return [real_identity hash]; + else + return [super hash]; +} + -(void) dealloc { RELEASE (name); |