From 2eda93403f88908d4e40697fc148d22d9f9e9d41 Mon Sep 17 00:00:00 2001 From: Fredrik Ekre Date: Tue, 3 Sep 2024 23:22:16 +0200 Subject: [PATCH] Fix serialization of kinds with multibyte chars This patch fixes serialization of `Kind`s to use `sizeof` (number of bytes) instead of `length` (number of characters) when computing number of bytes in the stringified `Kind`. --- src/kinds.jl | 2 +- test/serialization.jl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/kinds.jl b/src/kinds.jl index c5b43e9e..2386fe26 100644 --- a/src/kinds.jl +++ b/src/kinds.jl @@ -66,7 +66,7 @@ end # can be serialized and deserialized across different JuliaSyntax versions. function Base.write(io::IO, k::Kind) str = convert(String, k) - write(io, UInt8(length(str))) + write(io, str) + write(io, UInt8(sizeof(str))) + write(io, str) end function Base.read(io::IO, ::Type{Kind}) len = read(io, UInt8) diff --git a/test/serialization.jl b/test/serialization.jl index 5d194f05..abdc5fa6 100644 --- a/test/serialization.jl +++ b/test/serialization.jl @@ -19,7 +19,7 @@ end end @testset "Serialization $T" for T in [Expr, SyntaxNode, JuliaSyntax.GreenNode] - x = JuliaSyntax.parsestmt(T, "f(x) = x + 2") + x = JuliaSyntax.parsestmt(T, "f(x) = x ⋅ 2") f = tempname() open(f, "w") do io serialize(io, x)