From 6c08f04a8ec2ed51bf7ccc9241ec5b29dbbca85e Mon Sep 17 00:00:00 2001 From: hogliux Date: Mon, 9 Apr 2018 16:28:38 +0100 Subject: [PATCH] Android: Fixed a crash when painting a string that can't be represented as a UTF-16 string --- modules/juce_graphics/native/juce_android_Fonts.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/juce_graphics/native/juce_android_Fonts.cpp b/modules/juce_graphics/native/juce_android_Fonts.cpp index d513657e95..992dd41427 100644 --- a/modules/juce_graphics/native/juce_android_Fonts.cpp +++ b/modules/juce_graphics/native/juce_android_Fonts.cpp @@ -218,10 +218,12 @@ public: void getGlyphPositions (const String& text, Array& glyphs, Array& xOffsets) override { JNIEnv* env = getEnv(); - const int numChars = text.length(); + auto jtext = javaString (text); + + const int numChars = env->GetStringLength (jtext.get()); jfloatArray widths = env->NewFloatArray (numChars); - const int numDone = paint.callIntMethod (AndroidPaint.getTextWidths, javaString (text).get(), widths); + const int numDone = paint.callIntMethod (AndroidPaint.getTextWidths, jtext.get(), widths); HeapBlock localWidths (static_cast (numDone)); env->GetFloatArrayRegion (widths, 0, numDone, localWidths);