mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-30 00:11:26 +00:00
([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
This commit is contained in:
parent
95846c0b9b
commit
f1066b039f
1 changed files with 9 additions and 6 deletions
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue