From f805a9dce558e16a305d912f735fce6fb3e94f1e Mon Sep 17 00:00:00 2001 From: Pedro Gonnet <pedro.gonnet@durham.ac.uk> Date: Mon, 2 Sep 2013 19:02:12 +0000 Subject: [PATCH] resize memory after engine_split. Former-commit-id: 1ebb6b5cbb85ba6c09c7e965db7c037d66af8570 --- src/engine.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/engine.c b/src/engine.c index 30c443226e..920545dfa7 100644 --- a/src/engine.c +++ b/src/engine.c @@ -1774,6 +1774,20 @@ void engine_split ( struct engine *e , int *grid ) { k -= 1; } } + + /* Re-allocate the local parts. */ + s->size_parts = s->nr_parts * 2; + struct part *parts_new; + struct xpart *xparts_new; + if ( posix_memalign( (void **)&parts_new , part_align , sizeof(struct part) * s->size_parts ) != 0 || + posix_memalign( (void **)&xparts_new , part_align , sizeof(struct xpart) * s->size_parts ) != 0 ) + error( "Failed to allocate new part data." ); + memcpy( parts_new , s->parts , sizeof(struct part) * s->nr_parts ); + memcpy( xparts_new , s->xparts , sizeof(struct xpart) * s->nr_parts ); + free( s->parts ); + free( s->xparts ); + s->parts = parts_new; + s->xparts = xparts_new; } -- GitLab