]> Nishi Git Mirror - gwion.git/commitdiff
:art: Use struct M_Vector in Array:[T]
authorJérémie Astor <fennecdjay@gmail.com>
Mon, 6 Sep 2021 10:47:23 +0000 (12:47 +0200)
committerJérémie Astor <fennecdjay@gmail.com>
Mon, 6 Sep 2021 10:47:23 +0000 (12:47 +0200)
include/object.h
plug
src/lib/array.c

index 07b88771418c61679220a7136405d888f8dcd801..af933b4a787ed2fdbdf262d03d370a7b1303eecb 100644 (file)
@@ -26,7 +26,7 @@ ANN void      broadcast(const M_Object);
 #define ME(o)        (*(VM_Shred *)((M_Object)o)->data)
 #define EV_SHREDS(o) (*(struct Vector_ *)((M_Object)o)->data)
 #define UGEN(o)      (*(UGen *)((M_Object)o)->data)
-#define ARRAY(o)     (*(M_Vector *)((M_Object)o)->data)
+#define ARRAY(o)     (&*(struct M_Vector_ *)((M_Object)o)->data)
 #define IO_FILE(o)   (*(FILE **)(((M_Object)o)->data + SZ_INT))
 
 static inline void _release(const restrict M_Object obj,
diff --git a/plug b/plug
index 454a6ab0f2b34798203a7e770e3582603d198499..e3693aa9d760b47b804cb87d14efd8ae178480c2 160000 (submodule)
--- a/plug
+++ b/plug
@@ -1 +1 @@
-Subproject commit 454a6ab0f2b34798203a7e770e3582603d198499
+Subproject commit e3693aa9d760b47b804cb87d14efd8ae178480c2
index d628ae6a82f515e5ad0c4f976db178062899a11d..0bd3558b6c8ed64ec92b1409a5b9b9de5e219674 100644 (file)
@@ -17,7 +17,8 @@
 static DTOR(array_dtor) {
   if (*(void **)(o->data + SZ_INT)) xfree(*(void **)(o->data + SZ_INT));
   struct M_Vector_ *a = ARRAY(o);
-  free_m_vector(shred->info->mp, a);
+//  free_m_vector(shred->info->mp, a);
+  m_vector_release(a);
 }
 
 static DTOR(array_dtor_obj) {
@@ -38,7 +39,8 @@ ANN M_Object new_array(MemPool p, const Type t, const m_uint length) {
   const m_uint   depth =
       !tflag(t, tflag_typedef) ? t->array_depth : t->info->parent->array_depth;
   const m_uint size = depth > 1 ? SZ_INT : array_base(t)->size;
-  ARRAY(a)          = new_m_vector(p, size, length);
+  //ARRAY(a)          = new_m_vector(p, size, length);
+  m_vector_init(ARRAY(a), size, length);
   return a;
 }