.gitreview | 2 bundled/include/LibreOfficeKit/LibreOfficeKit.h | 27 ++++---- bundled/include/LibreOfficeKit/LibreOfficeKit.hxx | 59 +++++++++---------- bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h | 2 bundled/include/LibreOfficeKit/LibreOfficeKitInit.h | 15 ---- test/data/non_shape_writer_image.svg | 2 test/data/shapes_impress.svg | 16 ++--- test/data/shapes_writer.svg | 26 ++++---- test/helpers.hpp | 24 +++++++ test/httpcrashtest.cpp | 3 test/httpwstest.cpp | 43 +++++++++++-- wsd/LOOLWSD.cpp | 4 + 12 files changed, 141 insertions(+), 82 deletions(-)
New commits: commit 2639dfe41e71eac49acc3a473da3b899ec27d7c0 Author: Michael Meeks <[email protected]> AuthorDate: Thu May 2 17:03:18 2019 +0100 Commit: Andras Timar <[email protected]> CommitDate: Thu Jun 13 15:13:44 2019 +0200 SVG: update for current core. Change-Id: Ibb5da2d71ebd68a13b8ccc2a23f891320508f0a5 Reviewed-on: https://gerrit.libreoffice.org/71684 Reviewed-by: Jan Holesovsky <[email protected]> Tested-by: Jan Holesovsky <[email protected]> diff --git a/test/data/non_shape_writer_image.svg b/test/data/non_shape_writer_image.svg index 771ce3c31..2f40e47c3 100644 --- a/test/data/non_shape_writer_image.svg +++ b/test/data/non_shape_writer_image.svg @@ -36,7 +36,7 @@ <g class="Page"> <g class="Graphic"> <g> - <rect class="BoundingBox" stroke="none" fill="none" x="0" y="0" width="9523" height="6031"/><desc>120</desc> + <rect class="BoundingBox" stroke="none" fill="none" x="0" y="0" width="9523" height="6031"/> <image x="0" y="0" width="9523" height="6031" preserveAspectRatio="none" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQ4AAACrCAYAAACXF3JMAAAACXBIWXMAAAsTAAALEwEAmpwYAAAS1klEQVR4nO3d51dV957H8c+hKL0X6ShKQJQiihCDREURCyhFEVSI5kJmxWTi3AfJn5Ank7lrbsnSuXZUVLooBnvXWLDGrqgxKh0VKQK/ySZmTa5jgijn/PY55/Nay6fsL6zF27053723mRACRET9YSZ7ACLSPwwHEfUbw0FE/cZwEL3i9q1bwsPTU2NpaSl7FNViOIheUVZYAM8h7mLe4qWan8keR5UYDqL/R6Du7lWcPnlcjIt+n+V4DYaD6DWSGzajcJ81PH38hJeXF+PxCoaD6DWsu58hsW4zijdbIvez5Rg8eLDskVSF4SD6HQEdN3C76QQqSwvFnPlZPOv4DYaD6A9Mbt6BtdeH48L5EBEaFs54vMRwEP0BU9GFlNo12LDDFl7ePl87Ozt/JXsmNWA4iPrg2N2IuIZyFG20+XLpp198ZWpqKnsk6RgOojcQ1nYWd+tHYt93O8TUGUlGf8nCcBC9oekNW7Gm2gd+w4NEYGCgUceD4SB6Q4NEJ5Jq16Ow2BK5y5bDxsZG9kjSMBxE/eDx4gEim/ahtMBFZC39xGhX0hkOon6KeXoQdx8E4fiRQ+L92DijLAfDQdRPGggk1edjzSFX+A4NEN7e3kYXD4aD6C3830q6BfI+/7PRraQzHERvKaDzJkY0n8T2ogKRlpltVGcdDAfRO1BW0tffCsC56rMiPGKM0cSD4SB6ByaiG8m167Ch0g7ePr5bXVxc5smeSRcYDqJ3pKykT2osx7Z86/Q/LVsOMzPD/7Uy/O+QSAdGP69GTVMI9u6qEAmz5hj8JQvDQTRAEuq3Yv U5L/gPDxLvBQUZdDwYDqIBoqykz6nbgG0l1vBc9gVsbW1lj6Q1DAfRABry4ieMa96Lok2OIjv3U4NdSWc4iAbY+KcHce9hII4c2CtiJ8UbZDkYDqIBppRiZv0mrDnmDv/h7wkfHx+DiwfDQaQF1j2tmFFfgCJlJf2z/4ChvRWO4SDSkmEdNxHc8stK+ryFHxnUWQfDQaRFHzbvxIY7ATh7+pQYM3acwcSD4SDSot6V9Lr1WF9lD1//oQazks5wEGmZQ1cjJjeUGdRKuv5/B0R6YFTbOdxuCMbuHWUiMTlV7y9ZGA4iHUlsLMKqC764GjhSBAUH63U8GA4iHTFXVtLrN2BLiRU8PP8d9vb2skd6awwHkQ4pK+nRLXtRvNlR5OQt09uVdIaDSMeinh7CvUeBOLRvt4ibMk0vy8FwEOnYLyvpm7H6xBD4BQQKf39/vYsHw0EkgVVPK2bX5aN0i/KUdP1bSZcSjoaGhq87Ozu/lHFsor509widHMevswbvtZzEzuItIjUrR6/OOnQeju7ubqz89u9fWonnsNB06/rwRH1y634GC9Gmk2NNaqnE2tsjUH32jIgYE6k38dB5OExNTRE7MQ7XD5Yg66e/wgQ9uh6BSDVMRRdSa9dgXaUtPL28hbu7u17EQ8qlyoTYiZo7N66Jo23TENu8S8YIRKrh0N2EhMYiFG2ygrKSbm5uLnukPkkJh/LZdUpGlmbF3+qEz/Pr8O+8LWMMItUIaruEm43V+G57iZiVMk/1Zx3SPlWxtrZGcloGygvaseThN7DqeS5rFCJVSGgsxuof/HBpRLAYNXq0quMh9ePYgIAAzajIGLH95ELMe7wSqv5JEWmZspKeUrsWmyus4O3jM8zBwUG1p+LS9zimTJuuWXPnljj9PBbjnh6WPQ6RVK5djxHdVIXiTfa3cj75TGNiYiJ7pNeSHg7lB5OSsXDqqm+bd/u03cSQroeyRyKSatyzo7hXG4SDe6vEpKnTVXk iLj0cCkdHxz0zklNQWtKGjx5+g8GiQ/ZIRNIopVAedLz65JDep6QPHTpUdfFQRTgUI0NCNDevRYjdL9Ixqy5f9jhEUikr6Un1G1G21RK5ny2HlZWV7JH+hWrCoUicPUez8m6NuNQagVHPq2WPQySVb2cNQpqPoHSLq1iQ8ydV3YKvqnAoiy/pWdlN6/6n1dGz8z6cuuplj0Qk1cSWKuTfH4FTJ46JqJgJqimHqsKhcHNzc/pw6gxRWtWK7Id/6V3JJTJWyi0Zc+vWY80+R/gODRBDhgxRRTxUFw7FuKgoze3rP4j97bMQ31gqexwiqWy7WzCtoQjb8i17b8EfNGiQ7JHUGQ5FclqGZsVfHwm/51cxov2q7HGIpApqv4xbzdXYVV4skn7+3ZA9j2rDYWFhgbnzM7FtQxs8Hv4XbHqeyh6JSKppTaVYfcUPFy8Ei9GhYVLjodpwKHx9fTXjJsSJ0kONyHr8D2gEb8En49W7kl63DpsrbODj6yd1JV3V4VDExk3S1Ny8IY62TcEHLbtlj0MklWtXLWKadmFbvu2tJf/2uUZ5vo0Mqg+H8tn1z5csmpV/rxP+bdfg3XlP9khEUo1tPY67dUE4sLtSTJk+S8oli+rDobC1te29Bb9sS0fvLfiWvAWfjJhSilkNBVh92hNDA0eKYcOG6TweehEOxfDhwzXBEePFzhcLkFq7SvY4RFJZ9LT13ppRutUCucu+gI2NjU6PrzfhUMQnJGpW3b4pzj6PwZhnx2WPQySV74u7CG05grKtriLzo1ydrqTrVTiUPwSlZS7OW/Vtywqv9jtw73okeyQiqWJbdveupJ88dkRET4jVWTn0KhwKJyenldNmJq8o39GOnJ/+E+biheyRiKTpXUmv34DV+53g4z9MeHl56SQeehcORVh4uOb2jStid0dq73MLiIyZspI+vbEIxQWWyF22HIMHD9b6MfUyHIpZc9I0K+7fF5dbryCk7bzscYikek9ZSW86 g8rSQjFnfpbWzzr0NhzKLfipCxZh4+rn8H50D/bdTbJHIpJKWUlfe90fF86HiNCwcK3GQ2/DofDw8NB8MHmaKN7zBIsf/TdMBV8pScbLTHRhTt165FfYwMvb52tnZ+evtHYsbX1hXRkfHaOpuXlNHGpPxKSmCtnjEEnl0lWL2OZKFG20+XLpp198pa2VdL0Ph/LZdVLqfM2Kvz0Ufq1XMKzzluyRiKSKbD2JmoaR2PfdDjF1RpJWLln0PhwK5UGuKfOzULihHUse/wU23bwFn4zbTGUl/awH/IYHicDAwAGPh0GEQ+Hn56cZExMryo42IvPRP6CBkD0SkTTKSvrs+o0oKbJA3mfLB3wl3WDCoYibNEWz7uZ1ceJ5HGKeHJA9DpFUPp13EdFyGKUFLiJr6ScDupJuUOFQ3gqXumCRZuXfGoVv+y14dd6XPRKRVB882YNND0bg+JFD4v3YuAErh0GFQ2FnZ4ektPko3dqBpY++6T1lIzJWyiV7Ul0+Vh907n1Kure394DEw+DCoVD+GHQzNFJUdmVgbu0a2eMQSWXb8wTTGwpRvNkCeZ//eUBW0g0yHIqEmUmaf96tEedaxyG89ZTscYikeq/jCu40n8X2ogKRlpn9zmcdBhsOZfElPSs7b9W3T1Z4dtyDW9dj2SMRSRXfXIa1t/xxrvqsCI8Y807xMNhwKJRb8KMmTFxx+OCPSH38T9njEEmlrKRPqy9E4U47/ByOd/taAzSTKnV0dOD8qeOY0nJU9ihEqnDaKR5h4RHv/HUMOhzlhZvFsOYzCGy/InsUIumqrcej2SkEadNn8G8cv6f6zGnRcPsicprLZY9CJF2tmTsOOiRiaVZ23kDc+GaQ4airqzu9p7ICC+s28G33ZPS6NOYodctGfOLs3r/7DcTXNLhwdHV1YVv+msgPmyrg0lUnexwi6fY4zYHHiDBEjHm3T1J+y+DCUVVRKtyaLiC87YzsUYiku2I5GjUOkcibmzagd 8gaVDguX7okrl88g48bi2SPQiTdE1MHVDmlIHPBIgwaNGhAv7bBhKO5uXlYZXkx5tVvwOCedtnjEEklNCYoc8tGzMTJ8PT05PM4XqenpweFG9feimreC48XD2SPQyTdEbupMPccifc/0M5LmgwiHAf3VgmrusuIfnZI9ihE0tUMGopz9rHIy8jS2msh9T4cd+7cEdUnj2BJ/Wbo/JXdRCrTZmKFCpcsJKdnwNraWmvH0etwtLa2omTLRiTVb4J1T6vscYikUh6Wud01CyGR0QgICOB7VV5HCIHSLfliVMsx+HXekT0OkXRnbWLQ5hqC+IREvsnt9yhv5267fxlxLd/JHoVIusdmQ3DYfjo+XrB4qvIITW3Ty3A8ePBAHDmwBx/Vr+99WzeRMXuhMUe5ew4SZiXD0dFxjy6OqXfhUG6VL9q8Hgn1hbDrbpE9DpF0u51T4BEYitCwMJ19PqB34dhZsk34NVcjqOMH2aMQSfeDVRjuO4xBbnKqTj9U1KtwnD9XLR7dOI+cphLZoxBJ12LqiN2Oc5ClhZXyvuhNOOrr67dW7SjDwrr1vY9AIzJmPRpTlLjlYMKkqfDw8ND5CpNehOPlrfLpE5sqe9/GTWTsDttPg41vCKJj3pey96gX4dhTuV24NF7EmOffyx6FSLo7g4bhgv0EfJK+QGsr5X1RfTiuXb0qrp47haUN22SPQiRdq6kNKlyzkDI/C1ZWVtLmUHU4WlpasL14G9Lr18NC8FZ5Mm7KSnmFSyZCx8bA399f6q1Zqg2HslJeUrBBRLYcgCdvlSfCadtYdLiNwuSpCdLv51RtOA7v3yNMHl3GhKf7ZY9CJN1jcw8ctY/HxxkLdbJS3hdVhqOmpkacPnYYS+rze9+2TWTMOk0Go8Q1BzOTU3W2Ut4X1YWjra2t91b5GQ0FsO5+JnscIumqnFPhGxyBkSEh0i9RfqWqcPzyd418EdRyAgEdN2SPQyTdZatw/OQQjtykOaqJhk JV4Tj9/UnRev8yUlsqZY9CJF2jqTN2OyYjOyu7ydzcXPY4/0I14Xj06JE4sLsSOfUbYCK6ZY9DJFW3xhRl7tmYOCUBbm5uTrLneZUqwtHZ2Ylt+WuR0FgMh65G2eMQSXfIcQbs/EYhany0qi5RfqWKcOwqLxZeLRcQ3H5J9ihE0t0ZHIDLdtHIS50vbaW8L9LDcfHCeXHvSjWW8O1rRHhmYoPtzplIk7xS3hep4WhoaPh61/ZSZNWtg7nolDkKkXS9K+VuixAR/QH8/PzUearxkrRwdHd3o3jz+i8nNFfBteuxrDGIVON72zi8cBuJDyfHqzoaCmnh2PfdTmFTdxFjW4/JGoFINR6Ye+OE/WTkZi7WqGGlvC9SwnH9+nVx+ewJLG0o4NvXyOh1aAaj3HURZs5Nh52dnexx3ojOw6FcolSUbINTZy2O20/R9eGJ+mTV9RRRTw/p7D6pPc4p8A0KRXBwsN78P6rzcJiamiIufjra2/l8DVKnwwf2YmRrNWx7nmj9WD9YhuJHxwjkJqXoTTQUUi5VIiMj9eqHRMbl+yP7dXKq0WjmgiqnuchZmHNG108pf1fS9ziIjJGyUl7qloMPp86Aq6vrWNnz9BfDQSTBAcdZcPAPwbioKL08+2Y4iHTspkUQrtlHIy8tQy+joWA4iHTomYktdjrPQ/r8TFhYWMge560xHEQ6IjQmKHPLRmRMLHx9ffX2bEPBcBDpyHHbOGg8ghE3aYpeR0PBcBDpwINBPjhlPwm58xeq9lb5/mA4iLSs3cQSpS6LkZyWoTcr5X1hOIi0rNIlA4GhkRgxYoT+n2q8xHAQadF5q7FodBqFlBmzDSYaCoaDSEsazFyx33EWchYsOmNmZli/aob13RCpRJfGHMVuH2Fywky9XCnvC8NBpAX7HWfDPWA0IseONahLlF8xHEQD7IZFMG7Yj0Pe3DSDjIaC4SAaQE9M7bHTOR0LMhfp9Up5XxgOogGirJSXuy1G1IQ 4eHl5GezZhoLhIBogR+2mwNQjBLFxkww6GgqGg2gA/DjIF2ftJyJ3fqZBrJT3heEgekdtJpYoc/1lpdzW1lb2ODrBcBC9o0rXTASFR2H48OGGf6rxEsNB9A6qrcej2SkEadNnGE00FAwH0VuqNXPHQYdELM3KzlNe+2FMGA6it6CslJe6ZSM+cTacnJxWyp5H1xgOorewx2kOPEaEIWLMGKO6RPkVw0HUT1csR6PGIdKgV8r7wnAQ9cMTUwdUOaUgc8Ei6Nvb1wYSw0H0hn59Snl07CR4enoa7dmGguEgekNH7KbC3HMkJsRONOpoKBgOojdQM2goztnHIi8jyyhWyvvCcBD1oc3EChUuWUhOz4C1tbXscVSB4SD6A+Lnf9tdsxASGY2AgACearzEcBD9gbM2MWhzDUF8QiKj8RsMB9HveGw2BIftp+PjBYunmpiYyB5HVRgOotd4oTFHuXsOEmYlw9HRcY/sedSG4SB6jX1Os+EWMAqhYWG8RHkNhoPoNRrsg5Gbks5o/A6Gg+gVo0PDETQ63KhXyvvCcBC9Ij5xFs80+sBwEFG/MRxE1G8MBxH1G8NBRP3GcBBRvzEcRNRvDAcR9RvDQUT9xnAQUb8xHETUbwwHEfXb/wKI+5UEARLjxAAAAABJRU5ErkJggg=="/> </g> </g> diff --git a/test/data/shape_writer.svg b/test/data/shapes_writer.svg similarity index 67% rename from test/data/shape_writer.svg rename to test/data/shapes_writer.svg index 8937cb663..ed77bdade 100644 --- a/test/data/shape_writer.svg +++ b/test/data/shapes_writer.svg @@ -36,19 +36,19 @@ <g class="Page"> <g class="com.sun.star.drawing.CustomShape"> <g id="id1"> - <rect class="BoundingBox" stroke="none" fill="none" x="7310" y="6216" width="3367" height="8262"/><desc>150</desc><desc>139</desc><desc>133</desc><desc>132</desc><desc>111</desc> - <path fill="rgb(114,159,207)" stroke="none" d="M 7311,14474 L 7311,7057 8151,6218 10673,6218 10673,13633 9832,14474 7311,14474 Z M 7311,6218 L 7311,6218 Z M 10673,14474 L 10673,14474 Z"/><desc>140</desc><desc>139</desc><desc>132</desc><desc>512: XPATHSTROKE_SEQ_BEGIN</desc><desc>132</desc><desc>133</desc><desc>109</desc> - <path fill="none" stroke="rgb(52,101,164)" d="M 7311,14474 L 7311,7057 8151,6218 10673,6218 10673,13633 9832,14474 7311,14474 Z"/><desc>512: XPATHSTROKE_SEQ_END</desc><desc>140</desc><desc>139</desc><desc>132</desc><desc>512: XPATHSTROKE_SEQ_BEGIN</desc><desc>132</desc><desc>133</desc><desc>109</desc> - <path fill="none" stroke="rgb(52,101,164)" d="M 7311,6218 L 7311,6218 Z"/><desc>512: XPATHSTROKE_SEQ_END</desc><desc>140</desc><desc>139</desc><desc>132</desc><desc>512: XPATHSTROKE_SEQ_BEGIN</desc><desc>132</desc><desc>133</desc><desc>109</desc> - <path fill="none" stroke="rgb(52,101,164)" d="M 10673,14474 L 10673,14474 Z"/><desc>512: XPATHSTROKE_SEQ_END</desc><desc>140</desc><desc>139</desc><desc>133</desc><desc>132</desc><desc>111</desc> - <path fill="rgb(139,176,217)" stroke="none" d="M 7311,7057 L 8151,6218 10673,6218 9832,7057 7311,7057 Z M 7311,6218 L 7311,6218 Z M 10673,14474 L 10673,14474 Z"/><desc>140</desc><desc>139</desc><desc>132</desc><desc>512: XPATHSTROKE_SEQ_BEGIN</desc><desc>132</desc><desc>133</desc><desc>109</desc> - <path fill="none" stroke="rgb(52,101,164)" d="M 7311,7057 L 8151,6218 10673,6218 9832,7057 7311,7057 Z"/><desc>512: XPATHSTROKE_SEQ_END</desc><desc>140</desc><desc>139</desc><desc>132</desc><desc>512: XPATHSTROKE_SEQ_BEGIN</desc><desc>132</desc><desc>133</desc><desc>109</desc> - <path fill="none" stroke="rgb(52,101,164)" d="M 7311,6218 L 7311,6218 Z"/><desc>512: XPATHSTROKE_SEQ_END</desc><desc>140</desc><desc>139</desc><desc>132</desc><desc>512: XPATHSTROKE_SEQ_BEGIN</desc><desc>132</desc><desc>133</desc><desc>109</desc> - <path fill="none" stroke="rgb(52,101,164)" d="M 10673,14474 L 10673,14474 Z"/><desc>512: XPATHSTROKE_SEQ_END</desc><desc>140</desc><desc>139</desc><desc>133</desc><desc>132</desc><desc>111</desc> - <path fill="rgb(91,127,166)" stroke="none" d="M 9832,14474 L 9832,7057 10673,6218 10673,13633 9832,14474 Z M 7311,6218 L 7311,6218 Z M 10673,14474 L 10673,14474 Z"/><desc>140</desc><desc>139</desc><desc>132</desc><desc>512: XPATHSTROKE_SEQ_BEGIN</desc><desc>132</desc><desc>133</desc><desc>109</desc> - <path fill="none" stroke="rgb(52,101,164)" d="M 9832,14474 L 9832,7057 10673,6218 10673,13633 9832,14474 Z"/><desc>512: XPATHSTROKE_SEQ_END</desc><desc>140</desc><desc>139</desc><desc>132</desc><desc>512: XPATHSTROKE_SEQ_BEGIN</desc><desc>132</desc><desc>133</desc><desc>109</desc> - <path fill="none" stroke="rgb(52,101,164)" d="M 7311,6218 L 7311,6218 Z"/><desc>512: XPATHSTROKE_SEQ_END</desc><desc>140</desc><desc>139</desc><desc>132</desc><desc>512: XPATHSTROKE_SEQ_BEGIN</desc><desc>132</desc><desc>133</desc><desc>109</desc> - <path fill="none" stroke="rgb(52,101,164)" d="M 10673,14474 L 10673,14474 Z"/><desc>512: XPATHSTROKE_SEQ_END</desc><desc>140</desc> + <rect class="BoundingBox" stroke="none" fill="none" x="7310" y="6216" width="3367" height="8262"/> + <path fill="rgb(114,159,207)" stroke="none" d="M 7311,14474 L 7311,7057 8151,6218 10673,6218 10673,13633 9832,14474 7311,14474 Z M 7311,6218 L 7311,6218 Z M 10673,14474 L 10673,14474 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 7311,14474 L 7311,7057 8151,6218 10673,6218 10673,13633 9832,14474 7311,14474 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 7311,6218 L 7311,6218 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 10673,14474 L 10673,14474 Z"/> + <path fill="rgb(139,176,217)" stroke="none" d="M 7311,7057 L 8151,6218 10673,6218 9832,7057 7311,7057 Z M 7311,6218 L 7311,6218 Z M 10673,14474 L 10673,14474 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 7311,7057 L 8151,6218 10673,6218 9832,7057 7311,7057 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 7311,6218 L 7311,6218 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 10673,14474 L 10673,14474 Z"/> + <path fill="rgb(91,127,166)" stroke="none" d="M 9832,14474 L 9832,7057 10673,6218 10673,13633 9832,14474 Z M 7311,6218 L 7311,6218 Z M 10673,14474 L 10673,14474 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 9832,14474 L 9832,7057 10673,6218 10673,13633 9832,14474 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 7311,6218 L 7311,6218 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 10673,14474 L 10673,14474 Z"/> </g> </g> </g> commit 69d98dacd53c7fbe5da9d7de8d6b760c52af330b Author: Michael Meeks <[email protected]> AuthorDate: Sat May 4 22:50:00 2019 +0100 Commit: Andras Timar <[email protected]> CommitDate: Thu Jun 13 15:11:10 2019 +0200 test: close testCrashKit race. LOOLWSD is conservative and leaves forkit to start processes for a while. If we kill a kit before it has started and registered we can end up with LOOLWSD holding off to wait for the (now dead) kit, and the tearDown assertions that we have 1 kit failing. Change-Id: Id25e48bf55d1757d2223816293500fde6ff9df1b Reviewed-on: https://gerrit.libreoffice.org/71808 Reviewed-by: Ashod Nakashian <[email protected]> Tested-by: Jan Holesovsky <[email protected]> diff --git a/test/httpcrashtest.cpp b/test/httpcrashtest.cpp index a2b1a9d2a..6fd8ee938 100644 --- a/test/httpcrashtest.cpp +++ b/test/httpcrashtest.cpp @@ -136,6 +136,9 @@ void HTTPCrashTest::testCrashKit() { std::shared_ptr<LOOLWebSocket> socket = loadDocAndGetSocket("empty.odt", _uri, testname); + TST_LOG("Allowing time for kits to spawn and connect to wsd to get cleanly killed"); + std::this_thread::sleep_for(std::chrono::milliseconds(1000)); + TST_LOG("Killing loolkit instances."); killLoKitProcesses(); diff --git a/wsd/LOOLWSD.cpp b/wsd/LOOLWSD.cpp index 89171b339..75ab01c48 100644 --- a/wsd/LOOLWSD.cpp +++ b/wsd/LOOLWSD.cpp @@ -360,6 +360,7 @@ void cleanupDocBrokers() /// -1 for error. static int forkChildren(const int number) { + LOG_TRC("Request forkit to spawn " << number << " new child(ren)"); Util::assertIsLocked(NewChildrenMutex); if (number > 0) @@ -1507,6 +1508,9 @@ void LOOLWSD::autoSave(const std::string& docKey) void PrisonerPoll::wakeupHook() { #ifndef MOBILEAPP + LOG_TRC("PrisonerPoll - wakes up with " << NewChildren.size() << + " new children and " << DocBrokers.size() << " brokers and " << + OutstandingForks << " kits forking"); if (!LOOLWSD::checkAndRestoreForKit()) { // No children have died. commit 86f13bf07f9d6ec44e796d9afd7acd13b7ce3f1a Author: Miklos Vajna <[email protected]> AuthorDate: Thu May 9 14:25:21 2019 +0200 Commit: Andras Timar <[email protected]> CommitDate: Thu Jun 13 14:30:01 2019 +0200 Fix HTTPWSTest::testRenderShapeSelectionImpress() against product core This test only passed when core.git was built in a way so that '#if OSL_DEBUG_LEVEL > 0' was true (debug, dbgutil builds). Re-generate this against a product build, since 2 other tests already have references like that. We already have infrastructure for stripping <desc> XML elements from the actual result. (cherry picked from commit 1d32dc1742a2a51343af993939f0f51538de54aa) Change-Id: I9cdd53bf9625266d94313a90946270bfc266bd47 Reviewed-on: https://gerrit.libreoffice.org/72042 Reviewed-by: Michael Meeks <[email protected]> Tested-by: Michael Meeks <[email protected]> diff --git a/test/data/shapes_impress.svg b/test/data/shapes_impress.svg index 0cfac22b7..8087f20a7 100644 --- a/test/data/shapes_impress.svg +++ b/test/data/shapes_impress.svg @@ -36,18 +36,18 @@ <g ooo:name="page1" class="Page"> <g class="com.sun.star.drawing.CustomShape"> <g id="id3"> - <rect class="BoundingBox" stroke="none" fill="none" x="3301" y="5333" width="8385" height="6607"/><desc>150</desc><desc>139</desc><desc>133</desc><desc>132</desc><desc>111</desc> - <path fill="rgb(114,159,207)" stroke="none" d="M 7493,11938 L 3302,11938 3302,5334 11684,5334 11684,11938 7493,11938 Z"/><desc>140</desc><desc>139</desc><desc>132</desc><desc>512: XPATHSTROKE_SEQ_BEGIN</desc><desc>132</desc><desc>133</desc><desc>109</desc> - <path fill="none" stroke="rgb(52,101,164)" d="M 7493,11938 L 3302,11938 3302,5334 11684,5334 11684,11938 7493,11938 Z"/><desc>512: XPATHSTROKE_SEQ_END</desc><desc>140</desc> + <rect class="BoundingBox" stroke="none" fill="none" x="3301" y="5333" width="8385" height="6607"/> + <path fill="rgb(114,159,207)" stroke="none" d="M 7493,11938 L 3302,11938 3302,5334 11684,5334 11684,11938 7493,11938 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 7493,11938 L 3302,11938 3302,5334 11684,5334 11684,11938 7493,11938 Z"/> </g> </g> <g class="com.sun.star.drawing.CustomShape"> <g id="id4"> - <rect class="BoundingBox" stroke="none" fill="none" x="14477" y="4571" width="9656" height="8386"/><desc>150</desc><desc>139</desc><desc>133</desc><desc>132</desc><desc>111</desc> - <path fill="rgb(114,159,207)" stroke="none" d="M 19304,4572 C 22040,4572 24130,6387 24130,8763 24130,11139 22040,12954 19304,12954 16568,12954 14478,11139 14478,8763 14478,6387 16568,4572 19304,4572 Z M 14478,4572 L 14478,4572 Z M 24131,12955 L 24131,12955 Z"/><desc>140</desc><desc>139</desc><desc>132</desc><desc>512: XPATHSTROKE_SEQ_BEGIN</desc><desc>132</desc><desc>133</desc><desc>109</desc> - <path fill="none" stroke="rgb(52,101,164)" d="M 19304,4572 C 22040,4572 24130,6387 24130,8763 24130,11139 22040,12954 19304,12954 16568,12954 14478,11139 14478,8763 14478,6387 16568,4572 19304,4572 Z"/><desc>512: XPATHSTROKE_SEQ_END</desc><desc>140</desc><desc>139</desc><desc>132</desc><desc>512: XPATHSTROKE_SEQ_BEGIN</desc><desc>132</desc><desc>133</desc><desc>109</desc> - <path fill="none" stroke="rgb(52,101,164)" d="M 14478,4572 L 14478,4572 Z"/><desc>512: XPATHSTROKE_SEQ_END</desc><desc>140</desc><desc>139</desc><desc>132</desc><desc>512: XPATHSTROKE_SEQ_BEGIN</desc><desc>132</desc><desc>133</desc><desc>109</desc> - <path fill="none" stroke="rgb(52,101,164)" d="M 24131,12955 L 24131,12955 Z"/><desc>512: XPATHSTROKE_SEQ_END</desc><desc>140</desc> + <rect class="BoundingBox" stroke="none" fill="none" x="14477" y="4571" width="9656" height="8386"/> + <path fill="rgb(114,159,207)" stroke="none" d="M 19304,4572 C 22040,4572 24130,6387 24130,8763 24130,11139 22040,12954 19304,12954 16568,12954 14478,11139 14478,8763 14478,6387 16568,4572 19304,4572 Z M 14478,4572 L 14478,4572 Z M 24131,12955 L 24131,12955 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 19304,4572 C 22040,4572 24130,6387 24130,8763 24130,11139 22040,12954 19304,12954 16568,12954 14478,11139 14478,8763 14478,6387 16568,4572 19304,4572 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 14478,4572 L 14478,4572 Z"/> + <path fill="none" stroke="rgb(52,101,164)" d="M 24131,12955 L 24131,12955 Z"/> </g> </g> </g> diff --git a/test/httpwstest.cpp b/test/httpwstest.cpp index 8220f728c..cc8065c20 100644 --- a/test/httpwstest.cpp +++ b/test/httpwstest.cpp @@ -2762,6 +2762,8 @@ void HTTPWSTest::testRenderShapeSelectionImpress() if (it != responseSVG.end()) responseSVG.erase(responseSVG.begin(), ++it); + stripDescriptions(responseSVG); + CPPUNIT_ASSERT(svgMatch(testname, responseSVG, "shapes_impress.svg")); } catch (const Poco::Exception& exc) commit 5ef07ad07ed89f0a14fbe139d0ec14a12b231efa Author: Miklos Vajna <[email protected]> AuthorDate: Thu May 9 10:40:22 2019 +0200 Commit: Andras Timar <[email protected]> CommitDate: Thu Jun 13 14:29:56 2019 +0200 test: fix HTTPWSTest::testRenderShapeSelectionWriterImage() failure with ... ... debug core.git. Same problem, need to filter out <desc> XML elements. (cherry picked from commit aa5b28ceb08cfc5c0e19c8cc99ae353c47f8a2c0) Change-Id: I84973b831508e6a073d9c75868307d98a2ada370 Reviewed-on: https://gerrit.libreoffice.org/72030 Reviewed-by: Michael Meeks <[email protected]> Tested-by: Michael Meeks <[email protected]> diff --git a/test/httpwstest.cpp b/test/httpwstest.cpp index 4edef325e..8220f728c 100644 --- a/test/httpwstest.cpp +++ b/test/httpwstest.cpp @@ -2820,6 +2820,8 @@ void HTTPWSTest::testRenderShapeSelectionWriterImage() if (it != responseSVG.end()) responseSVG.erase(responseSVG.begin(), ++it); + stripDescriptions(responseSVG); + CPPUNIT_ASSERT(svgMatch(testname, responseSVG, "non_shape_writer_image.svg")); } catch (const Poco::Exception& exc) commit fbd8957f9660c7010e5d274b0c86eae676cb6276 Author: Miklos Vajna <[email protected]> AuthorDate: Thu May 9 10:30:11 2019 +0200 Commit: Andras Timar <[email protected]> CommitDate: Thu Jun 13 14:29:51 2019 +0200 test: fix HTTPWSTest::testRenderShapeSelectionWriter() failure with ... ... debug core.git. SVGActionWriter::ImplWriteActions() in core.git writes additional <desc> XML elements, guarded with a '#if OSL_DEBUG_LEVEL > 0' block. Filter these out, so the reference SVG will match both product and debug builds. (cherry picked from commit 0fbabb7a22b1213afe7e3f1b071c4c2876b20584) Change-Id: Iba3fb25af206c70d5a4ff5801a934dcfd74704de Reviewed-on: https://gerrit.libreoffice.org/72029 Reviewed-by: Michael Meeks <[email protected]> Tested-by: Michael Meeks <[email protected]> diff --git a/.gitreview b/.gitreview index fc87636e3..489239f60 100644 --- a/.gitreview +++ b/.gitreview @@ -3,5 +3,5 @@ host=logerrit port=29418 project=online defaultremote=logerrit -defaultbranch=master +defaultbranch=distro/collabora/collabora-online-4 diff --git a/test/httpwstest.cpp b/test/httpwstest.cpp index 0c08be604..4edef325e 100644 --- a/test/httpwstest.cpp +++ b/test/httpwstest.cpp @@ -52,6 +52,31 @@ using namespace helpers; +namespace +{ +/** + * Strips <desc>...</desc> strings from an SVG, some of which are only in debug builds, so breaks + * comparison with a fixed reference. + */ +void stripDescriptions(std::vector<char>& svg) +{ + while (true) + { + std::string startDesc("<desc>"); + auto itStart = std::search(svg.begin(), svg.end(), startDesc.begin(), startDesc.end()); + if (itStart == svg.end()) + return; + + std::string endDesc("</desc>"); + auto itEnd = std::search(svg.begin(), svg.end(), endDesc.begin(), endDesc.end()); + if (itEnd == svg.end()) + return; + + svg.erase(itStart, itEnd + endDesc.size()); + } +} +} + /// Tests the HTTP WebSocket API of loolwsd. The server has to be started manually before running this test. class HTTPWSTest : public CPPUNIT_NS::TestFixture { @@ -2765,6 +2790,8 @@ void HTTPWSTest::testRenderShapeSelectionWriter() if (it != responseSVG.end()) responseSVG.erase(responseSVG.begin(), ++it); + stripDescriptions(responseSVG); + CPPUNIT_ASSERT(svgMatch(testname, responseSVG, "shapes_writer.svg")); } catch (const Poco::Exception& exc) commit 1ef4f21583300a2bdbfae1043d4e084a96f016ef Author: Michael Meeks <[email protected]> AuthorDate: Thu May 2 16:14:12 2019 +0100 Commit: Andras Timar <[email protected]> CommitDate: Thu Jun 13 14:29:43 2019 +0200 tests: make SVG comparison tests much more helpful. Dump the SVG we actually get as a .new file for easy upgrade and comparison on mismatch. Change-Id: I607a97ff27a9bf480524efc31877e46d74c5ee3d Reviewed-on: https://gerrit.libreoffice.org/71680 Reviewed-by: Jan Holesovsky <[email protected]> Tested-by: Jan Holesovsky <[email protected]> diff --git a/test/helpers.hpp b/test/helpers.hpp index 50aadada7..f5b033c04 100644 --- a/test/helpers.hpp +++ b/test/helpers.hpp @@ -651,6 +651,30 @@ inline void getServerVersion(std::shared_ptr<LOOLWebSocket>& socket, } +inline bool svgMatch(const char *testname, const std::vector<char> &response, const char *templateFile) +{ + const std::vector<char> expectedSVG = helpers::readDataFromFile(templateFile); + if (expectedSVG != response) + { + TST_LOG_BEGIN("Svg mismatch: response is\n"); + if(response.empty()) + TST_LOG_APPEND("<empty>"); + else + TST_LOG_APPEND(std::string(response.data(), response.size())); + TST_LOG_APPEND("\nvs. expected (from '" << templateFile << "' :\n"); + TST_LOG_APPEND(std::string(expectedSVG.data(), expectedSVG.size())); + std::string newName = templateFile; + newName += ".new"; + TST_LOG_APPEND("Updated template writing to: " << newName << "\n"); + TST_LOG_END; + FILE *of = fopen(Poco::Path(TDOC, newName).toString().c_str(), "w"); + fwrite(response.data(), response.size(), 1, of); + fclose(of); + return false; + } + return true; +} + #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/test/httpwstest.cpp b/test/httpwstest.cpp index b2ba3ed70..0c08be604 100644 --- a/test/httpwstest.cpp +++ b/test/httpwstest.cpp @@ -2729,6 +2729,7 @@ void HTTPWSTest::testRenderShapeSelectionImpress() std::shared_ptr<LOOLWebSocket> socket = loadDocAndGetSocket(_uri, documentURL, testname); sendTextFrame(socket, "uno .uno:SelectAll", testname); + std::this_thread::sleep_for(std::chrono::milliseconds(250)); sendTextFrame(socket, "rendershapeselection mimetype=image/svg+xml", testname); std::vector<char> responseSVG = getResponseMessage(socket, "shapeselectioncontent:", testname); CPPUNIT_ASSERT(!responseSVG.empty()); @@ -2736,8 +2737,7 @@ void HTTPWSTest::testRenderShapeSelectionImpress() if (it != responseSVG.end()) responseSVG.erase(responseSVG.begin(), ++it); - const std::vector<char> expectedSVG = helpers::readDataFromFile("shapes_impress.svg"); - CPPUNIT_ASSERT(expectedSVG == responseSVG); + CPPUNIT_ASSERT(svgMatch(testname, responseSVG, "shapes_impress.svg")); } catch (const Poco::Exception& exc) { @@ -2757,6 +2757,7 @@ void HTTPWSTest::testRenderShapeSelectionWriter() // Select the shape with SHIFT + F4 sendKeyPress(socket, 0, 771 | skShift, testname); + std::this_thread::sleep_for(std::chrono::milliseconds(250)); sendTextFrame(socket, "rendershapeselection mimetype=image/svg+xml", testname); std::vector<char> responseSVG = getResponseMessage(socket, "shapeselectioncontent:", testname); CPPUNIT_ASSERT(!responseSVG.empty()); @@ -2764,8 +2765,7 @@ void HTTPWSTest::testRenderShapeSelectionWriter() if (it != responseSVG.end()) responseSVG.erase(responseSVG.begin(), ++it); - const std::vector<char> expectedSVG = helpers::readDataFromFile("shape_writer.svg"); - CPPUNIT_ASSERT(expectedSVG == responseSVG); + CPPUNIT_ASSERT(svgMatch(testname, responseSVG, "shapes_writer.svg")); } catch (const Poco::Exception& exc) { @@ -2785,6 +2785,7 @@ void HTTPWSTest::testRenderShapeSelectionWriterImage() // Select the shape with SHIFT + F4 sendKeyPress(socket, 0, 771 | skShift, testname); + std::this_thread::sleep_for(std::chrono::milliseconds(250)); sendTextFrame(socket, "rendershapeselection mimetype=image/svg+xml", testname); std::vector<char> responseSVG = getResponseMessage(socket, "shapeselectioncontent:", testname); CPPUNIT_ASSERT(!responseSVG.empty()); @@ -2792,8 +2793,7 @@ void HTTPWSTest::testRenderShapeSelectionWriterImage() if (it != responseSVG.end()) responseSVG.erase(responseSVG.begin(), ++it); - const std::vector<char> expectedSVG = helpers::readDataFromFile("non_shape_writer_image.svg"); - CPPUNIT_ASSERT(expectedSVG == responseSVG); + CPPUNIT_ASSERT(svgMatch(testname, responseSVG, "non_shape_writer_image.svg")); } catch (const Poco::Exception& exc) { commit 589614fb57e3cdf4fd36e231a73a928ba1e369d6 Author: Andras Timar <[email protected]> AuthorDate: Thu Jun 13 14:02:33 2019 +0200 Commit: Andras Timar <[email protected]> CommitDate: Thu Jun 13 14:06:51 2019 +0200 Sync bundled LOKit headers with core apart from typos, changes in comments ... 1) 88014e265a91753b69b70b5f4b246921d16051de is missing from distro/collabora/cp-6.0-29 it's just a nice to have additional check, not important 2) #ifdef IOS parts are not important in general, because we don't build the app from this branch 3) Gesture event support was missing Change-Id: I9695cbf628e88a96ce9ea78edc77220872e0ac9e diff --git a/bundled/include/LibreOfficeKit/LibreOfficeKit.h b/bundled/include/LibreOfficeKit/LibreOfficeKit.h index 133f73875..7f7c0c24a 100644 --- a/bundled/include/LibreOfficeKit/LibreOfficeKit.h +++ b/bundled/include/LibreOfficeKit/LibreOfficeKit.h @@ -328,18 +328,6 @@ struct _LibreOfficeKitDocumentClass const int width, const int height, const double dpiscale); -#ifdef IOS - /// @see lok::Document::paintTileToCGContext(). - void (*paintTileToCGContext) (LibreOfficeKitDocument* pThis, - void* rCGContext, - const int nCanvasWidth, - const int nCanvasHeight, - const int nTilePosX, - const int nTilePosY, - const int nTileWidth, - const int nTileHeight); -#endif // IOS - // CERTIFICATE AND SIGNING /// @see lok::Document::insertCertificate(). @@ -356,6 +344,7 @@ struct _LibreOfficeKitDocumentClass /// @see lok::Document::getSignatureState(). int (*getSignatureState) (LibreOfficeKitDocument* pThis); +// END CERTIFICATE AND SIGNING /// @see lok::Document::renderShapeSelection size_t (*renderShapeSelection)(LibreOfficeKitDocument* pThis, char** pOutput); @@ -363,6 +352,20 @@ struct _LibreOfficeKitDocumentClass /// @see lok::Document::createViewWithOptions(). int (*createViewWithOptions) (LibreOfficeKitDocument* pThis, const char* pOptions); + /// @see lok::Document::postWindowGestureEvent(). + void (*postWindowGestureEvent) (LibreOfficeKitDocument* pThis, + unsigned nWindowId, + const char* pType, + int nX, + int nY, + int nOffset); + + /// @see lok::Document::selectPart(). + void (*selectPart) (LibreOfficeKitDocument* pThis, int nPart, int nSelect); + + /// @see lok::Document::moveSelectedParts(). + void (*moveSelectedParts) (LibreOfficeKitDocument* pThis, int nPosition, bool bDuplicate); + #endif // defined LOK_USE_UNSTABLE_API || defined LIBO_INTERNAL_ONLY }; diff --git a/bundled/include/LibreOfficeKit/LibreOfficeKit.hxx b/bundled/include/LibreOfficeKit/LibreOfficeKit.hxx index a72275ed1..da7c65b70 100644 --- a/bundled/include/LibreOfficeKit/LibreOfficeKit.hxx +++ b/bundled/include/LibreOfficeKit/LibreOfficeKit.hxx @@ -561,34 +561,6 @@ public: mpDoc->pClass->postWindowExtTextInputEvent(mpDoc, nWindowId, nType, pText); } -#ifdef IOS - /** - * Renders a subset of the document to a Core Graphics context. - * - * Note that the buffer size and the tile size implicitly supports - * rendering at different zoom levels, as the number of rendered pixels and - * the rendered rectangle of the document are independent. - * - * @param rCGContext the CGContextRef, cast to a void*. - * @param nCanvasHeight number of pixels in a column of pBuffer. - * @param nTilePosX logical X position of the top left corner of the rendered rectangle, in TWIPs. - * @param nTilePosY logical Y position of the top left corner of the rendered rectangle, in TWIPs. - * @param nTileWidth logical width of the rendered rectangle, in TWIPs. - * @param nTileHeight logical height of the rendered rectangle, in TWIPs. - */ - void paintTileToCGContext(void* rCGContext, - const int nCanvasWidth, - const int nCanvasHeight, - const int nTilePosX, - const int nTilePosY, - const int nTileWidth, - const int nTileHeight) - { - return mpDoc->pClass->paintTileToCGContext(mpDoc, rCGContext, nCanvasWidth, nCanvasHeight, - nTilePosX, nTilePosY, nTileWidth, nTileHeight); - } -#endif // IOS - /** * Insert certificate (in binary form) to the certificate store. */ @@ -633,6 +605,37 @@ public: return mpDoc->pClass->renderShapeSelection(mpDoc, pOutput); } + /** + * Posts a gesture event to the window with given id. + * + * @param nWindowId + * @param pType Event type, like panStart, panEnd, panUpdate. + * @param nX horizontal position in document coordinates + * @param nY vertical position in document coordinates + * @param nOffset difference value from when the gesture started to current value + */ + void postWindowGestureEvent(unsigned nWindowId, + const char* pType, + int nX, int nY, int nOffset) + { + return mpDoc->pClass->postWindowGestureEvent(mpDoc, nWindowId, pType, nX, nY, nOffset); + } + + /// Set a part's selection mode. + /// nSelect is 0 to deselect, 1 to select, and 2 to toggle. + void selectPart(int nPart, int nSelect) + { + mpDoc->pClass->selectPart(mpDoc, nPart, nSelect); + } + + /// Moves the selected pages/slides to a new position. + /// nPosition is the new position where the selection + /// should go. bDuplicate when true will copy instead of move. + void moveSelectedParts(int nPosition, bool bDuplicate) + { + mpDoc->pClass->moveSelectedParts(mpDoc, nPosition, bDuplicate); + } + #endif // defined LOK_USE_UNSTABLE_API || defined LIBO_INTERNAL_ONLY }; diff --git a/bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h b/bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h index 33d235af8..850e544c6 100644 --- a/bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h +++ b/bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h @@ -352,7 +352,7 @@ typedef enum /** * The size and/or the position of the view cursor changed. A view cursor - * is a cursor of another view, the current view can't change it. + * is a cursor of an other view, the current view can't change it. * * The payload format: * diff --git a/bundled/include/LibreOfficeKit/LibreOfficeKitInit.h b/bundled/include/LibreOfficeKit/LibreOfficeKitInit.h index 6667d2b92..5c600b502 100644 --- a/bundled/include/LibreOfficeKit/LibreOfficeKitInit.h +++ b/bundled/include/LibreOfficeKit/LibreOfficeKitInit.h @@ -287,22 +287,13 @@ static LibreOfficeKit *lok_init_2( const char *install_path, const char *user_p } free( imp_lib ); // dlhandle is "leaked" - // coverity[leaked_storage] - on purpose + // coverity[leaked_storage] return pSym( install_path ); } - if (user_profile_url != NULL && user_profile_url[0] == '/') - { - // It should be either a file: URL or a vnd.sun.star.pathname: URL. - fprintf( stderr, "second parameter to lok_init_2 '%s' should be a URL, not a pathname\n", user_profile_url ); - lok_dlclose( dlhandle ); - free( imp_lib ); - return NULL; - } - free( imp_lib ); // dlhandle is "leaked" - // coverity[leaked_storage] - on purpose + // coverity[leaked_storage] return pSym2( install_path, user_profile_url ); #else return libreofficekit_hook_2( install_path, user_profile_url ); @@ -339,7 +330,7 @@ int lok_preinit( const char *install_path, const char *user_profile_url ) free( imp_lib ); // dlhandle is "leaked" - // coverity[leaked_storage] - on purpose + // coverity[leaked_storage] return pSym( install_path, user_profile_url ); } #endif _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
