summaryrefslogtreecommitdiff
path: root/memory.c
diff options
context:
space:
mode:
authorPeter Mikkelsen <peter@pmikkelsen.com>2022-02-12 14:06:30 +0000
committerPeter Mikkelsen <peter@pmikkelsen.com>2022-02-12 14:06:30 +0000
commitdbb716d26d82ab8fbe44601f4af2ad9873d1dc1c (patch)
tree0d90a237b289a566b1f0f27cd36ff4df6efe54a0 /memory.c
parentc07082b46a0a54b4164be67f8b7d18cd24843030 (diff)
Handle prototypes a bit better, but I suspect not everywhere
Diffstat (limited to 'memory.c')
-rw-r--r--memory.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/memory.c b/memory.c
index f1ff3a3..c94993c 100644
--- a/memory.c
+++ b/memory.c
@@ -64,11 +64,15 @@ freearray(Array *a)
SetRefs(a, GetRefs(a)-1);
if(GetRefs(a) == 0){
- if(GetType(a) == AtypeArray)
- for(int i = 0; i < GetSize(a); i++)
- freearray(a->arraydata[i]);
+ if(GetType(a) == AtypeArray){
+ if(GetSize(a) > 0){
+ for(int i = 0; i < GetSize(a); i++)
+ freearray(a->arraydata[i]);
+ free(a->rawdata);
+ }else
+ freearray(a->prototype);
+ }
free(a->shape);
- free(a->rawdata);
free(a);
arrayalloccounts--;
}