@@ -449,7 +449,7 @@ void MatLayerCylSet::setFutureBufferAddress(char* futureFlatBufferPtr)
449449{
450450 // / Sets the actual location of the external flat buffer before it was created
451451 // /
452- fixPointers (mFlatBufferPtr , futureFlatBufferPtr);
452+ fixPointers (mFlatBufferPtr , futureFlatBufferPtr, false ); // flag that futureFlatBufferPtr is not valid yet
453453 flatObject::setFutureBufferAddress (futureFlatBufferPtr);
454454}
455455
@@ -484,16 +484,19 @@ void MatLayerCylSet::fixPointers(char* newBasePtr)
484484}
485485
486486// ______________________________________________
487- void MatLayerCylSet::fixPointers (char * oldPtr, char * newPtr)
487+ void MatLayerCylSet::fixPointers (char * oldPtr, char * newPtr, bool newPtrValid )
488488{
489489 // fix pointers on the internal structure of the flat buffer after retrieving it from the file
490+ auto * layPtr = get ()->mLayers ;
490491 get ()->mLayers = flatObject::relocatePointer (oldPtr, newPtr, get ()->mLayers );
491492 get ()->mR2Intervals = flatObject::relocatePointer (oldPtr, newPtr, get ()->mR2Intervals );
492493 get ()->mInterval2LrID = flatObject::relocatePointer (oldPtr, newPtr, get ()->mInterval2LrID );
493-
494+ if (newPtrValid) {
495+ layPtr = get ()->mLayers ;
496+ }
494497 for (int i = 0 ; i < getNLayers (); i++) {
495- get ()-> mLayers [i].setFlatPointer (flatObject::relocatePointer (oldPtr, newPtr, get ()-> mLayers [i].getFlatBufferPtr ()));
496- get ()-> mLayers [i].fixPointers (oldPtr, newPtr);
498+ layPtr [i].setFlatPointer (flatObject::relocatePointer (oldPtr, newPtr, layPtr [i].getFlatBufferPtr ()));
499+ layPtr [i].fixPointers (oldPtr, newPtr);
497500 }
498501}
499502#endif // !GPUCA_GPUCODE
0 commit comments