From d28fcdc289b3d7d15fa8bdccef11d3d785581a08 Mon Sep 17 00:00:00 2001 From: Jerome St-Louis Date: Thu, 16 Apr 2015 17:20:21 -0400 Subject: [PATCH] ecere/containers: Saving null containers as empty --- ecere/src/com/containers/Container.ec | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/ecere/src/com/containers/Container.ec b/ecere/src/com/containers/Container.ec index 532758d..34f7dce 100644 --- a/ecere/src/com/containers/Container.ec +++ b/ecere/src/com/containers/Container.ec @@ -288,19 +288,21 @@ public: void OnSerialize(IOChannel channel) { - uint count = GetCount(); + // NOTE: Null containers currently get serialized as empty + uint count = this ? GetCount() : 0; IteratorPointer i; Class Dclass = class(D); bool isNormalClass = (Dclass.type == normalClass) && Dclass.structSize; channel.Put(count); - for(i = GetFirst(); i; i = GetNext(i)) - { - D data = GetData(i); - Class Eclass = isNormalClass ? ((Instance)data)._class : Dclass; - ((void (*)(void *, void *, void *))(void *)Eclass._vTbl[__ecereVMethodID_class_OnSerialize])(Eclass, - ((Dclass.type == systemClass && !Dclass.byValueSystemClass) || Dclass.type == bitClass || Dclass.type == enumClass || Dclass.type == unitClass) ? &data : (void *)data, channel); - } + if(this) + for(i = GetFirst(); i; i = GetNext(i)) + { + D data = GetData(i); + Class Eclass = isNormalClass ? ((Instance)data)._class : Dclass; + ((void (*)(void *, void *, void *))(void *)Eclass._vTbl[__ecereVMethodID_class_OnSerialize])(Eclass, + ((Dclass.type == systemClass && !Dclass.byValueSystemClass) || Dclass.type == bitClass || Dclass.type == enumClass || Dclass.type == unitClass) ? &data : (void *)data, channel); + } } void OnUnserialize(IOChannel channel) -- 1.8.3.1