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