From 7e934f3db5b98a9b2f6f3c6152cad8f63c9a4d1a Mon Sep 17 00:00:00 2001 From: JonasIsensee Date: Tue, 19 Dec 2023 11:26:45 +0100 Subject: [PATCH] bignum fix (#513) Co-authored-by: Jonas Isensee --- src/data/specialcased_types.jl | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/data/specialcased_types.jl b/src/data/specialcased_types.jl index 5c08646c..d0fc5215 100644 --- a/src/data/specialcased_types.jl +++ b/src/data/specialcased_types.jl @@ -180,6 +180,13 @@ wconvert(::Type{String}, x::BigFloat) = string(x) rconvert(::Type{BigInt}, x::String) = parse(BigInt, x, base = 62) rconvert(::Type{BigFloat}, x::String) = parse(BigFloat, x) +# BigInts and BigFloats are defined as mutable structs but should be reconstructed like an +# immutable one. This overrides the default behavior. +function jlconvert(::ReadRepresentation{BN,CustomSerialization{String,Vlen{String}}}, + f::JLDFile, ptr::Ptr, header_offset::RelOffset) where BN <: Union{BigInt, BigFloat} + rconvert(BN, jlconvert(ReadRepresentation{String, Vlen{String}}(), f, ptr, header_offset)) +end + ## Pointers # Previously it was disallowed to serialize pointers.