ecere/com/instance: Fixed confusion with private member
authorJerome St-Louis <jerome@ecere.com>
Fri, 30 May 2014 03:21:40 +0000 (23:21 -0400)
committerJerome St-Louis <jerome@ecere.com>
Fri, 30 May 2014 03:23:00 +0000 (23:23 -0400)
- When a private member was declared before a public property with the same name

compiler/bootstrap/ecere/bootstrap/instance.c
ecere/src/com/instance.ec

index 98a2047..0cea2ae 100644 (file)
@@ -4053,10 +4053,14 @@ while(*curMember && ((*curMember)->memberAccess == 2))
 else
 while(*curMember && (*curMember)->name)
 {
-struct __ecereNameSpace__ecere__com__DataMember * dataMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(_class, (*curMember)->name, (((void *)0)), (((void *)0)), (((void *)0)));
+struct __ecereNameSpace__ecere__com__DataMember * dataMember = (((void *)0));
 
+if(((*curMember)->memberAccess != 2))
+{
+dataMember = __ecereNameSpace__ecere__com__eClass_FindDataMember(_class, (*curMember)->name, (((void *)0)), (((void *)0)), (((void *)0)));
 if(!dataMember)
 dataMember = (struct __ecereNameSpace__ecere__com__DataMember *)__ecereNameSpace__ecere__com__eClass_FindProperty(_class, (*curMember)->name, (((void *)0)));
+}
 if(dataMember && dataMember->memberAccess != 2 && dataMember->id >= 0)
 {
 *curMember = dataMember;
index 5dd172c..ce30d12 100644 (file)
@@ -4968,8 +4968,12 @@ public dllexport void eClass_FindNextMember(Class _class, Class * curClass, Data
          else
             while(*curMember && (*curMember).name)      // ADDED THIS HERE for eComPacket packet { Connect, 0, { ECOMMUNICATOR_PROTOCOL_VERSION } };
             {
-               DataMember dataMember = eClass_FindDataMember(_class, curMember->name, null, null, null);
-               if(!dataMember) dataMember = (DataMember)eClass_FindProperty(_class, curMember->name, null);
+               DataMember dataMember = null;
+               if(((*curMember).memberAccess != privateAccess))
+               {
+                  dataMember = eClass_FindDataMember(_class, curMember->name, null, null, null);
+                  if(!dataMember) dataMember = (DataMember)eClass_FindProperty(_class, curMember->name, null);
+               }
                if(dataMember && dataMember.memberAccess != privateAccess && dataMember.id >= 0) // Skip _vTbl, _refCount and _class in Instance
                {
                   *curMember = dataMember;