From: ali198724 Date: Wed, 7 Oct 2020 11:42:41 +0000 (+0300) Subject: Dali-toolkit: Text controls crash fix X-Git-Tag: dali_1.9.34~4^2 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=d1a4fa773b183f8dc37e2ea01f94355ee278c3ff;hp=-c 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 --- d1a4fa773b183f8dc37e2ea01f94355ee278c3ff 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 ) )