From 0df1eeecacb4f4e0c32e8d86320fca1efdc4bdda Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Fri, 21 Jan 2022 23:36:48 +0000 Subject: =?UTF-8?q?Implement=20=E2=88=98=20and=20fix=20a=20bug=20in=20simp?= =?UTF-8?q?lifyarray?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- array.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'array.c') diff --git a/array.c b/array.c index 37cd159..2e0e71e 100644 --- a/array.c +++ b/array.c @@ -192,8 +192,16 @@ simplifyarray(Array *a) b->stranded = a->stranded; for(i = 0; i < a->rank; i++) b->shape[i] = a->shape[i]; - for(i = 0; i < a->size; i++) + for(i = 0; i < a->size; i++){ memcpy(b->rawdata + i * datasizes[type], a->arraydata[i]->rawdata, datasizes[type]); + if(b->type == AtypeArray) + incref(b->arraydata[i]); + } + if(b->type == AtypeArray){ + Array *tmp = b; + b = simplifyarray(b); + freearray(tmp); + } return b; }else if(canfloat){ Array *b = allocarray(AtypeFloat, a->rank, a->size); -- cgit v1.2.3