From e1f892f6c36a30ef07f2f28159ccd07ddbd09483 Mon Sep 17 00:00:00 2001 From: ed Date: Fri, 19 Feb 2021 16:01:03 +0000 Subject: [PATCH] VST3: Use UTF-16 encoding when assigning to a Steinberg::Vst::String128 in toString128() --- .../format_types/juce_VST3Common.h | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/modules/juce_audio_processors/format_types/juce_VST3Common.h b/modules/juce_audio_processors/format_types/juce_VST3Common.h index f7116eb3e9..a5cfdef576 100755 --- a/modules/juce_audio_processors/format_types/juce_VST3Common.h +++ b/modules/juce_audio_processors/format_types/juce_VST3Common.h @@ -68,12 +68,14 @@ static bool doUIDsMatch (const Steinberg::TUID a, const Steinberg::TUID b) noexc #endif //============================================================================== -inline juce::String toString (const Steinberg::char8* string) noexcept { return juce::String (string); } -inline juce::String toString (const Steinberg::char16* string) noexcept { return juce::String (juce::CharPointer_UTF16 ((juce::CharPointer_UTF16::CharType*) string)); } +inline juce::String toString (const Steinberg::char8* string) noexcept { return juce::String (string); } +inline juce::String toString (const Steinberg::char16* string) noexcept { return juce::String (juce::CharPointer_UTF16 ((juce::CharPointer_UTF16::CharType*) string)); } // NB: The casts are handled by a Steinberg::UString operator -inline juce::String toString (const Steinberg::UString128& string) noexcept { return toString (static_cast (string)); } -inline juce::String toString (const Steinberg::UString256& string) noexcept { return toString (static_cast (string)); } +inline juce::String toString (const Steinberg::UString128& string) noexcept { return toString (static_cast (string)); } +inline juce::String toString (const Steinberg::UString256& string) noexcept { return toString (static_cast (string)); } + +inline Steinberg::Vst::TChar* toString (const juce::String& source) noexcept { return reinterpret_cast (source.toUTF16().getAddress()); } inline void toString128 (Steinberg::Vst::String128 result, const char* source) { @@ -82,12 +84,7 @@ inline void toString128 (Steinberg::Vst::String128 result, const char* source) inline void toString128 (Steinberg::Vst::String128 result, const juce::String& source) { - Steinberg::UString (result, 128).fromAscii (source.toUTF8()); -} - -inline Steinberg::Vst::TChar* toString (const juce::String& source) noexcept -{ - return reinterpret_cast (source.toUTF16().getAddress()); + Steinberg::UString (result, 128).assign (toString (source)); } #if JUCE_WINDOWS