#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,
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) {
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;
}