From: Jerome St-Louis Date: Thu, 1 Aug 2013 14:10:07 +0000 (-0400) Subject: ecere/com: Fixed OnGetString for classes containing String members X-Git-Tag: 0.44.08~79 X-Git-Url: https://ecere.com/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=53965b89503c96d268f4878c6cda37f22b1432e9;p=sdk ecere/com: Fixed OnGetString for classes containing String members --- 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, "{ ");