Mercurial > repos > rhope
diff runtime/array.c @ 97:fa437d23bb24
fix memory corruption bug
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 03 Aug 2010 22:38:25 -0400 |
parents | 5a08705f7610 |
children | 7428aa5d6ade |
line wrap: on
line diff
--- a/runtime/array.c Mon Aug 02 05:12:19 2010 -0400 +++ b/runtime/array.c Tue Aug 03 22:38:25 2010 -0400 @@ -1,5 +1,6 @@ #include "integer.h" #include "object.h" +#include <stdio.h> void _internal_array_copyout(object * array, int32_t index, object * dest) { @@ -76,7 +77,7 @@ object * _internal_array_allocnakedcopy(object * osource, int32_t size) { int32_t tocopy,idx; - object *cur; + char *cur; t_Array * ret, *source = (t_Array *)osource; t_Blueprint * bp = source->payload.Eltype; @@ -86,7 +87,6 @@ add_ref((object *)bp); ret->payload.Eltype = bp; tocopy = size < source->payload.Length ? size : source->payload.Length; - memcpy(ret+1, source+1, tocopy*bp->bp->size); //Lower type IDs don't have any reference params so we can safely skip this for those if(bp->bp->type_id >= TYPE_ARRAY) @@ -99,6 +99,7 @@ cur += bp->bp->size; } } + fflush(stdout); release_ref(osource); return (object *)ret;