framework/source/accelerators/acceleratorconfiguration.cxx |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

New commits:
commit fe09be20ad4eb17cdbd09cff29de78b55a4135c7
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Wed Mar 22 16:59:23 2023 +0000
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Wed Apr 5 22:32:42 2023 +0200

    fix crash seen when experimenting with tdf#129547
    
    Change-Id: I0b26a7f683f91d3307856f86c5a437fde1155451
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149331
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    (cherry picked from commit 936f2e6924e405433770b98f32a615508fd0670d)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149434
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>
    (cherry picked from commit 98465ee3f987c43bdb0a615ca81ffbbac6bf479f)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149515

diff --git a/framework/source/accelerators/acceleratorconfiguration.cxx 
b/framework/source/accelerators/acceleratorconfiguration.cxx
index 3507314a9a6e..ad08f375a177 100644
--- a/framework/source/accelerators/acceleratorconfiguration.cxx
+++ b/framework/source/accelerators/acceleratorconfiguration.cxx
@@ -64,7 +64,10 @@ namespace framework
     static OUString lcl_getKeyString(const css::awt::KeyEvent& aKeyEvent)
     {
         const sal_Int32 nBeginIndex = 4; // "KEY_" is the prefix of an 
identifier...
-        OUStringBuffer 
sKeyBuffer((KeyMapping::get().mapCodeToIdentifier(aKeyEvent.KeyCode)).subView(nBeginIndex));
+        OUString 
sKey(KeyMapping::get().mapCodeToIdentifier(aKeyEvent.KeyCode));
+        if (sKey.getLength() < nBeginIndex) // dead key
+            return OUString();
+        OUStringBuffer sKeyBuffer(sKey.subView(nBeginIndex));
 
         if ( (aKeyEvent.Modifiers & css::awt::KeyModifier::SHIFT) == 
css::awt::KeyModifier::SHIFT )
             sKeyBuffer.append("_SHIFT");

Reply via email to