diff --git a/src/cell.c b/src/cell.c index cd2f2d6b86e2301b2e675f442ed9a6790ab223eb..a1360b9d5ef036b6e9481ca9373fde889f3ddbf3 100644 --- a/src/cell.c +++ b/src/cell.c @@ -53,6 +53,9 @@ #include "error.h" #include "inline.h" +/* Global variables. */ +int cell_next_tag = 0; + /** * @brief Get the size of the cell subtree. @@ -178,7 +181,8 @@ int cell_pack ( struct cell *c , struct pcell *pc ) { pc->dt_min = c->dt_min; pc->dt_max = c->dt_max; pc->count = c->count; - c->tag = pc->tag = ( ((long long int)c) / sizeof(struct cell) ) % (1 << 30); + // c->tag = pc->tag = ( ((long long int)c) / sizeof(struct cell) ) % (1 << 30); + c->tag = pc->tag = cell_next_tag++; /* Fill in the progeny, depth-first recursion. */ for ( k = 0 ; k < 8 ; k++ ) diff --git a/src/cell.h b/src/cell.h index 0b4828efbef4e297cb765e98c193bec901e370ce..43dedefbb6c079b726ed1cbb5d4cfe0b39e368a2 100644 --- a/src/cell.h +++ b/src/cell.h @@ -21,6 +21,10 @@ #define cell_sid_dt 13 +/* Global variables. */ +extern int cell_next_tag; + + /* Packed cell. */ struct pcell { diff --git a/src/engine.c b/src/engine.c index a6291a0c87b45ceb4ff8db773277ddb9164d5aad..31286005523e810d31d68f6f2b827efa357f5ea6 100644 --- a/src/engine.c +++ b/src/engine.c @@ -702,6 +702,7 @@ void engine_exchange_cells ( struct engine *e ) { error( "Failed to allocate pcell buffer." ); /* Pack the cells. */ + cell_next_tag = 0; for ( k = 0 ; k < nr_cells ; k++ ) if ( cells[k].sendto ) { cell_pack( &cells[k] , &pcells[ offset[k] ] );