@@ -3300,10 +3300,9 @@ static jl_value_t *jl_restore_package_image_from_stream(ios_t *f, jl_image_t *im
3300
3300
return restored ;
3301
3301
}
3302
3302
3303
- static void jl_restore_system_image_from_stream (ios_t * f , jl_image_t * image )
3303
+ static void jl_restore_system_image_from_stream (ios_t * f , jl_image_t * image , uint32_t checksum )
3304
3304
{
3305
- uint64_t checksum = 0 ; // TODO: make this real
3306
- jl_restore_system_image_from_stream_ (f , image , NULL , checksum , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL );
3305
+ jl_restore_system_image_from_stream_ (f , image , NULL , checksum | ((uint64_t )0xfdfcfbfa << 32 ), NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL );
3307
3306
}
3308
3307
3309
3308
JL_DLLEXPORT jl_value_t * jl_restore_incremental_from_buf (const char * buf , jl_image_t * image , size_t sz , jl_array_t * depmods , int completeinfo )
@@ -3354,8 +3353,9 @@ JL_DLLEXPORT void jl_restore_system_image(const char *fname)
3354
3353
if (ios_readall (& f , sysimg , len ) != len )
3355
3354
jl_errorf ("Error reading system image file." );
3356
3355
ios_close (& f );
3356
+ uint32_t checksum = jl_crc32c (0 , sysimg , len );
3357
3357
ios_static_buffer (& f , sysimg , len );
3358
- jl_restore_system_image_from_stream (& f , & sysimage );
3358
+ jl_restore_system_image_from_stream (& f , & sysimage , checksum );
3359
3359
ios_close (& f );
3360
3360
JL_SIGATOMIC_END ();
3361
3361
}
@@ -3366,7 +3366,8 @@ JL_DLLEXPORT void jl_restore_system_image_data(const char *buf, size_t len)
3366
3366
ios_t f ;
3367
3367
JL_SIGATOMIC_BEGIN ();
3368
3368
ios_static_buffer (& f , (char * )buf , len );
3369
- jl_restore_system_image_from_stream (& f , & sysimage );
3369
+ uint32_t checksum = jl_crc32c (0 , buf , len );
3370
+ jl_restore_system_image_from_stream (& f , & sysimage , checksum );
3370
3371
ios_close (& f );
3371
3372
JL_SIGATOMIC_END ();
3372
3373
}
0 commit comments