From 53965b89503c96d268f4878c6cda37f22b1432e9 Mon Sep 17 00:00:00 2001 From: Jerome St-Louis Date: Thu, 1 Aug 2013 10:10:07 -0400 Subject: [PATCH] ecere/com: Fixed OnGetString for classes containing String members --- ecere/src/com/dataTypes.ec | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ecere/src/com/dataTypes.ec b/ecere/src/com/dataTypes.ec index f8dcc8a..43f66d9 100644 --- a/ecere/src/com/dataTypes.ec +++ b/ecere/src/com/dataTypes.ec @@ -604,10 +604,11 @@ static char * OnGetString(Class _class, void * data, char * tempString, void * f char internalMemberString[1024]; byte * memberData = ((byte *)data + (((member._class.type == normalClass) ? member._class.offset : 0) + member.offset)); int c; - for(c = 0; c < memberType.structSize; c++) + uint typeSize = (memberType.type == normalClass) ? memberType.typeSize : memberType.structSize; + for(c = 0; c < typeSize; c++) if(memberData[c]) break; - if(c < memberType.structSize) + if(c < typeSize) { bool needClass = true; char * result; @@ -615,7 +616,7 @@ static char * OnGetString(Class _class, void * data, char * tempString, void * f result = ((char *(*)(void *, void *, char *, void *, bool *))(void *)memberType._vTbl[__ecereVMethodID_class_OnGetString])(memberType, *(Instance *)memberData, internalMemberString, null, &needClass); else result = ((char *(*)(void *, void *, char *, void *, bool *))(void *)memberType._vTbl[__ecereVMethodID_class_OnGetString])(memberType, memberData, internalMemberString, null, &needClass); - if(needClass) + if(needClass && strcmp(memberType.dataTypeString, "char *")) { //strcpy(memberString, memberType.name); strcat(memberString, "{ "); -- 1.8.3.1