@@ -286,20 +286,23 @@ coeff(b::Basic, x::Basic) = coeff(b, x, one(Basic))
286286
287287function Serialization. serialize (s:: Serialization.AbstractSerializer , m:: Basic )
288288 Serialization. serialize_type (s, typeof (m))
289-
289+
290290 size = Ref {UInt64} (0 )
291- serialized = ccall ((:basic_dumps , libsymengine),
291+ serialized = ccall ((:basic_dumps , libsymengine),
292292 Ptr{Int8}, (Ref{Basic}, Ptr{UInt64}), m, size)
293- julia_serialized_str = unsafe_string (serialized, size[])
294- write (s. io, julia_serialized_str)
293+
294+ write (s. io, size[])
295+ unsafe_write (s. io, serialized, size[])
295296end
296297
297298function Serialization. deserialize (s:: Serialization.AbstractSerializer , :: Type{Basic} )
298- ser_str = read (s. io, String)
299-
299+ size = read (s. io, UInt64)
300+ serialized_data = read (s. io, size)
301+
300302 a = Basic ()
301- res = ccall ((:basic_loads , libsymengine),
302- Cuint, (Ref{Basic}, Ptr{Int8}, UInt64), a, ser_str, length (ser_str) )
303+ res = ccall ((:basic_loads , libsymengine),
304+ Cuint, (Ref{Basic}, Ptr{Int8}, UInt64), a, serialized_data, size )
303305 throw_if_error (res)
304306 return a
305307end
308+
0 commit comments