Browse Source

Android: Fixed a crash when painting a string that can't be represented as a UTF-16 string

tags/2021-05-28
hogliux 7 years ago
parent
commit
6c08f04a8e
1 changed files with 4 additions and 2 deletions
  1. +4
    -2
      modules/juce_graphics/native/juce_android_Fonts.cpp

+ 4
- 2
modules/juce_graphics/native/juce_android_Fonts.cpp View File

@@ -218,10 +218,12 @@ public:
void getGlyphPositions (const String& text, Array<int>& glyphs, Array<float>& xOffsets) override void getGlyphPositions (const String& text, Array<int>& glyphs, Array<float>& xOffsets) override
{ {
JNIEnv* env = getEnv(); JNIEnv* env = getEnv();
const int numChars = text.length();
auto jtext = javaString (text);
const int numChars = env->GetStringLength (jtext.get());
jfloatArray widths = env->NewFloatArray (numChars); 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<jfloat> localWidths (static_cast<size_t> (numDone)); HeapBlock<jfloat> localWidths (static_cast<size_t> (numDone));
env->GetFloatArrayRegion (widths, 0, numDone, localWidths); env->GetFloatArrayRegion (widths, 0, numDone, localWidths);


Loading…
Cancel
Save