From f1066b039ff96c8802ad6aaa1caca1285b04ea01 Mon Sep 17 00:00:00 2001 From: Andrew McCallum Date: Fri, 12 Apr 1996 21:09:24 +0000 Subject: [PATCH] ([Encoder -initForWritingToStream:withFormatVersion:cStreamClass :cStreamFormatVersion:]): Initialize new ivar. ([Encoder -_coderCreateForwardReferenceForObject:]): Use new ivar to `gensym' a new forward reference. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1351 72102866-910b-0410-8b05-ffd578937521 --- Source/Encoder.m | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Source/Encoder.m b/Source/Encoder.m index 8e4904378..34d871fd2 100644 --- a/Source/Encoder.m +++ b/Source/Encoder.m @@ -140,6 +140,7 @@ my_object_is_class(id object) object_2_xref = NULL; object_2_fref = NULL; const_ptr_2_xref = NULL; + fref_counter = 0; [self writeSignature]; return self; } @@ -295,7 +296,7 @@ my_object_is_class(id object) object_2_fref = NSCreateMapTable (NSNonOwnedPointerOrNullMapKeyCallBacks, NSIntMapValueCallBacks, 0); - fref = NSCountMapTable (object_2_fref) + 1; + fref = ++fref_counter; assert ( ! NSMapGet (object_2_fref, anObject)); NSMapInsert (object_2_fref, anObject, (void*)fref); return fref; @@ -656,6 +657,11 @@ my_object_is_class(id object) [self encodeValueOfCType: @encode(unsigned) at: &fref withName: @"Object forward cross-reference number"]; + /* xxx This code used to be below at the place marked `1234' */ + /* Remove it from the forward reference table, since we'll never + have another forward reference for this object. */ + if (fref) + [self _coderRemoveForwardReferenceForObject: anObj]; } else { @@ -671,14 +677,11 @@ my_object_is_class(id object) else [self _doEncodeObject:anObj]; [self encodeUnindent]; - + /* The code above marked `1234' used to be here. */ /* Register that we have encoded it so that future encoding can do backward references properly. */ [self _coderInternalCreateReferenceForObject: anObj]; - /* Remove it from the forward reference table, since we'll never - have another forward reference for this object. */ - if (fref) - [self _coderRemoveForwardReferenceForObject: anObj]; + /* We're done encoding the object, it's no longer in progress. */ NSMapRemove (in_progress_table, anObj); }