From a517a35cf999c56472a54566f57516213d74aadd Mon Sep 17 00:00:00 2001 From: Paul Berg Date: Thu, 11 Jan 2024 18:11:26 +0100 Subject: [PATCH] use sizeof(::String) instead of length(::String) for conversion to MlirStringRef MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit otherwise, we can't use 🍕 as a string attribute. --- src/MLIR.jl | 2 +- test/runtests.jl | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/MLIR.jl b/src/MLIR.jl index 5b1f7fea..d13ff806 100644 --- a/src/MLIR.jl +++ b/src/MLIR.jl @@ -33,7 +33,7 @@ Base.cconvert(::Type{API.MlirStringRef}, s::AbstractString) = # Directly create `MlirStringRef` instead of adding an extra ccall. function Base.unsafe_convert(::Type{API.MlirStringRef}, s::Union{Symbol, String, AbstractVector{UInt8}}) p = Base.unsafe_convert(Ptr{Cchar}, s) - return API.MlirStringRef(p, length(s)) + return API.MlirStringRef(p, sizeof(s)) end module IR diff --git a/test/runtests.jl b/test/runtests.jl index e0d9aaba..9b482217 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -3,3 +3,12 @@ using Test include("examples.jl") include("executionengine.jl") + +@testset "MlirStringRef conversion" begin + s = "mlir 😄 α γ 🍕" + + ms = Base.unsafe_convert(MLIR.API.MlirStringRef, s) + reconstructed = unsafe_string(Ptr{Cchar}(ms.data), ms.length) + + @test s == reconstructed +end