This patch fixes crash while processing MathML objects that contain invalid &lt;mmultiscripts&gt; elements.<br><br>MathML object &quot;Object 1/content.xml&quot; from &quot;Formula-crash.odp&quot; file (attached to bug report <a href="https://bugs.freedesktop.org/show_bug.cgi?id=39898" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=39898</a> ) contains the following element:<br>







<br><span style="font-family:courier new,monospace">&lt;mmultiscripts&gt;</span><br style="font-family:courier new,monospace"><span style="font-family:courier new,monospace">   &lt;mtext/&gt;</span><br style="font-family:courier new,monospace">







<span style="font-family:courier new,monospace">   &lt;mprescripts/&gt;</span><br style="font-family:courier new,monospace"><span style="font-family:courier new,monospace">   &lt;none/&gt;</span><br style="font-family:courier new,monospace">







<span style="font-family:courier new,monospace">&lt;/mmultiscripts&gt;</span><br><br>This &lt;mmultiscripts&gt; element is invalid since it contains odd number of elements after &lt;mprescripts/&gt; (see <a href="http://www.w3.org/TR/MathML/chapter3.html#presm.mmultiscripts" target="_blank">http://www.w3.org/TR/MathML/chapter3.html#presm.mmultiscripts</a> ) and LibreOffice crashes on it.<br>







<br>I found inconsistency between SmXMLMultiScriptsContext_Impl::EndElement and SmXMLMultiScriptsContext_Impl::MiddleElement (file starmath/source/mathmlimport.cxx). <span lang="en"><span>MiddleElement used for processing postscripts and EndElement used for processing prescripts. The contents of these methods are</span> <span>almost</span> <span>identical, but </span></span>in MiddleElement we can see:<br>







<br><span style="font-family:courier new,monospace">if (pScriptNode-&gt;GetToken().aText.Len())</span><span style="font-family:courier new,monospace"></span><br><br>and in EndElement:<br><br><span style="font-family:courier new,monospace">if (pScriptNode &amp;&amp; ((pScriptNode-&gt;GetToken().eType != TIDENT) ||</span><br style="font-family:courier new,monospace">







<div style="margin-left:40px"><span style="font-family:courier new,monospace">(pScriptNode-&gt;GetToken().aText.Len())))</span><span style="font-family:courier new,monospace"><br></span></div><span style="font-family:courier new,monospace"></span><br>







<span style="font-family:courier new,monospace"></span>In method MiddleElement variable pScriptNode becomes NULL if number of elements is odd. So, I merged 
content of methods MiddleElement and EndElement into method 
ProcessSubSupPairs using second variant of the condition.