ecere/Containers/Array: Fixed sorting structs
[sdk] / ecere / src / com / containers / Array.ec
index 705b541..d792b22 100644 (file)
@@ -1,5 +1,6 @@
 namespace com;
 
+import "instance"
 import "Container"
 
 #ifdef _DEBUG
@@ -169,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);
@@ -390,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);
    }
 };