ecere/Containers/Array: Fixed sorting structs
[sdk] / ecere / src / com / containers / Array.ec
index b27c325..d792b22 100644 (file)
@@ -170,6 +170,7 @@ public:
       Array array = eInstance_New(_class); //.fullName);
       uint count, c;
       Class Dclass = class(D);
+      incref array;
       channel.Get(count);
 #ifdef _DEBUG
       //printf("%d %ss\n", count, Dclass.name);
@@ -391,7 +392,7 @@ public:
    void Sort(bool ascending)
    {
       Class Dclass = class(D);
-      bool byRef = (Dclass.type == systemClass && !Dclass.byValueSystemClass) || Dclass.type == bitClass || Dclass.type == enumClass || Dclass.type == unitClass;
+      bool byRef = (Dclass.type == systemClass && !Dclass.byValueSystemClass) || Dclass.type == bitClass || Dclass.type == enumClass || Dclass.type == unitClass || Dclass.type == structClass;
       _qsortrx(array, count, Dclass.typeSize, (void *)Dclass._vTbl[__ecereVMethodID_class_OnCompare], null, Dclass, !byRef, ascending);
    }
 };