diff options
author | dimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7> | 2008-01-16 19:20:21 (GMT) |
---|---|---|
committer | dimitri <dimitri@afe2bf4a-e733-0410-8a33-86f594647bc7> | 2008-01-16 19:20:21 (GMT) |
commit | 8dab665567c9dffaa3f5fea198fc2110d536594d (patch) | |
tree | 78bac4e928b25e139605aceefa82537f378d8af0 /src/marshal.cpp | |
parent | d3461a1c31f008345d784dc3e819047bc5265c30 (diff) | |
download | Doxygen-8dab665567c9dffaa3f5fea198fc2110d536594d.zip Doxygen-8dab665567c9dffaa3f5fea198fc2110d536594d.tar.gz Doxygen-8dab665567c9dffaa3f5fea198fc2110d536594d.tar.bz2 |
Release-1.5.4
Diffstat (limited to 'src/marshal.cpp')
-rw-r--r-- | src/marshal.cpp | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/src/marshal.cpp b/src/marshal.cpp index a11a25f..a032a64 100644 --- a/src/marshal.cpp +++ b/src/marshal.cpp @@ -301,7 +301,17 @@ void marshalMemberList(StorageIntf *s,MemberList *ml) } else { - marshalUInt(s,1); // not a null pointer + marshalUInt(s,ml->count()); + MemberListIterator mli(*ml); + MemberDef *md; + uint count=0; + for (mli.toFirst();(md=mli.current());++mli) + { + marshalObjPointer(s,md); + count++; + } + assert(count==ml->count()); + ml->marshal(s); } } @@ -690,11 +700,18 @@ GroupList *unmarshalGroupList(StorageIntf *s) MemberList *unmarshalMemberList(StorageIntf *s) { + uint i; uint count = unmarshalUInt(s); if (count==NULL_LIST) return 0; - MemberList *ml = new MemberList; - ml->unmarshal(s); - return ml; + MemberList *result = new MemberList; + assert(count<1000000); + for (i=0;i<count;i++) + { + MemberDef *md = (MemberDef*)unmarshalObjPointer(s); + result->append(md); + } + result->unmarshal(s); + return result; } ExampleSDict *unmarshalExampleSDict(StorageIntf *s) |