From d1a4fa773b183f8dc37e2ea01f94355ee278c3ff Mon Sep 17 00:00:00 2001 From: ali198724 Date: Wed, 7 Oct 2020 14:42:41 +0300 Subject: [PATCH] Dali-toolkit: Text controls crash fix Fix crash when delete characters after change text color Run demo, then press backspace ``` //g++ -g -O0 main.cpp -o app `pkg-config --cflags --libs dali2-core dali2-adaptor dali2-adaptor-integration dali2-toolkit` using namespace Dali; using namespace Dali::Toolkit; class SimpleApp : public ConnectionTracker { public: SimpleApp(Application& application) : mApplication(application) { mApplication.InitSignal().Connect(this, &SimpleApp::Create); } void Create(Application& application) { Window window = application.GetWindow(); window.SetBackgroundColor(Vector4(0.04f, 0.345f, 0.392f, 1.0f)); TextField field = TextField::New(); field.SetProperty(TextField::Property::TEXT, "Erase"); field.SetProperty(TextField::Property::TEXT_COLOR, Vector4(0.0f, 1.0f, 1.0f, 1.0f)); // CYAN field.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); field.SetProperty(Actor::Property::SIZE, Vector2(300.f, 60.f)); window.Add(field); field.SetKeyInputFocus(); } private: Application& mApplication; }; int DALI_EXPORT_API main(int argc, char** argv) { Application application = Application::New(&argc, &argv); SimpleApp test(application); application.MainLoop(); return 0; } ``` Change-Id: I2c13330f92746c73d32da71cced15c3b297126dc --- dali-toolkit/internal/text/text-run-container.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dali-toolkit/internal/text/text-run-container.h b/dali-toolkit/internal/text/text-run-container.h index 3b54d5c..5af8c55 100644 --- a/dali-toolkit/internal/text/text-run-container.h +++ b/dali-toolkit/internal/text/text-run-container.h @@ -178,6 +178,9 @@ void UpdateCharacterRuns( CharacterIndex index, { T& run = *it; + if (run.characterRun.numberOfCharacters == 0) + continue; + const CharacterIndex lastRunIndex = run.characterRun.characterIndex + run.characterRun.numberOfCharacters - 1u; if( lastRunIndex < index ) @@ -240,6 +243,9 @@ void UpdateCharacterRuns( CharacterIndex index, { T& run = *it; + if (run.characterRun.numberOfCharacters == 0) + continue; + // Update the number of characters of the style run. if( ( 0u == index ) && ( 0u == run.characterRun.characterIndex ) ) -- 2.7.4