tdf#129372: PPTX: error at SfxBaseModel::storeToStorage: 0x20d(row,col)

Teach starmath how to deal with surrogate pairs
see https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates
+
comments from:
https://bugs.documentfoundation.org/show_bug.cgi?id=129372#c6

Here's the culprit character:
𝜕 %uD835%uDF15

I didn't dig why these 2 (found in reduced example attached to the bugtracker)
didn't need this patch
𝑋 %uD835%uDC4B
𝑢 %uD835%uDC62

Change-Id: I3bf2322a9e7f1974aa8622a91812aeb11e613ace
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91941
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
(cherry picked from commit 11b57129b53e1e2d71a5f969e2417226b4e2ddd9)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91900
Reviewed-by: Michael Stahl <michael.stahl@cib.de>
diff --git a/starmath/source/parse.cxx b/starmath/source/parse.cxx
index 5fc391a..7b004b2 100644
--- a/starmath/source/parse.cxx
+++ b/starmath/source/parse.cxx
@@ -956,9 +956,14 @@
        m_aCurToken.cMathChar  = '\0';
        m_aCurToken.nGroup     = TG::NONE;
        m_aCurToken.nLevel     = 5;
        m_aCurToken.aText      = m_aBufferString.copy( nRealStart, 1 );

        aRes.EndPos = nRealStart + 1;
        // tdf#129372: we may have to deal with surrogate pairs
        // (see https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates)
        // in this case, we must read 2 sal_Unicode instead of 1
        int nOffset(rtl::isSurrogate(m_aBufferString[nRealStart])? 2 : 1);
        m_aCurToken.aText      = m_aBufferString.copy( nRealStart, nOffset );

        aRes.EndPos = nRealStart + nOffset;
    }

    if (TEND != m_aCurToken.eType)