Repository: linebender/resvg (language: rust)

Issue:
panic with SVG generated by PlantUML
Example SVG:
https://www.plantuml.com/plantuml/svg/SoWkIImgAStDuU9ApaaiBbPmoy_dujBcud98pKi12WC0

call stack:
```txt
# Child-SP          RetAddr               Call Site
00 00000042`c8ef9db0 00007ffd`c8846720     KERNELBASE!RaiseException+0x69
01 00000042`c8ef9e90 00007ff7`cdf63f48     VCRUNTIME140!_CxxThrowException(void * pExceptionObject = 0x00000042`c8ef9f10, struct _s__ThrowInfo * pThrowInfo = <Value unavailable error>)+0x90 [D:\a\_work\1\s\src\vctools\crt\vcruntime\src\eh\throw.cpp @ 75] 
02 (Inline Function) --------`--------     Yiili!panic_unwind::real_imp::panic(void)+0x77 [/rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library\panic_unwind\src\seh.rs @ 322] 
03 00000042`c8ef9ef0 00007ff7`cdebcfcb     Yiili!panic_unwind::__rust_start_panic(void)+0x88 [/rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library\panic_unwind\src\lib.rs @ 103] 
04 00000042`c8ef9f30 00007ff7`cdebcca7     Yiili!std::panicking::rust_panic(void)+0x1b [/rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library\std\src\panicking.rs @ 736] 
05 00000042`c8efa000 00007ff7`cdebc95b     Yiili!std::panicking::rust_panic_with_hook(void)+0x297 [/rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library\std\src\panicking.rs @ 706] 
06 00000042`c8efa0f0 00007ff7`cdeb8def     Yiili!std::panicking::begin_panic_handler::closure$0(void)+0x8b [/rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library\std\src\panicking.rs @ 577] 
07 00000042`c8efa170 00007ff7`cdebc5b0     Yiili!std::sys_common::backtrace::__rust_end_short_backtrace<std::panicking::begin_panic_handler::closure_env$0,never$>(void)+0x1f [/rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library\std\src\sys_common\backtrace.rs @ 137] 
08 00000042`c8efa1b0 00007ff7`ce339e35     Yiili!std::panicking::begin_panic_handler(void)+0x70 [/rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library\std\src\panicking.rs @ 575] 
09 00000042`c8efa200 00007ff7`ce339f5c     Yiili!core::panicking::panic_fmt(void)+0x35 [/rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library\core\src\panicking.rs @ 64] 
0a 00000042`c8efa250 00007ff7`cdfa43b8     Yiili!core::panicking::panic(void)+0x4c [/rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library\core\src\panicking.rs @ 111] 
0b 00000042`c8efa2c0 00007ff7`cdf9b5de     Yiili!ZN16usvg_text_layout13text_to_paths17h416cba2b0444cc32E+0xe1b8
0c 00000042`c8efa550 00007ff7`cdf92ae5     Yiili!ZN16usvg_text_layout13text_to_paths17h416cba2b0444cc32E+0x53de
0d 00000042`c8eface0 00007ff7`cdf95440     Yiili!ZN65_$LT$usvg..text..Text$u20$as$u20$usvg_text_layout..TextToPath$GT$7convert17hb74169065f07d82dE+0x75
0e 00000042`c8efb140 00007ff7`cde39ed4     Yiili!ZN16usvg_text_layout12convert_text17h3d42be6e397c8a03E+0x4b0
0f 00000042`c8efb270 00007ff7`ce250a6b     Yiili!resvg_parse_tree_from_data+0xa4
10 00000042`c8efb390 00007ff7`ce250e04     Yiili!ResvgRenderer::load(class QByteArray * data = 0x00000042`c8eff5e8, class ResvgOptions * opt = <Value unavailable error>)+0x4b [H:\Shareware\yiili\src\thirdparty\resvg\include\ResvgQt.h @ 356] 
```


Discussion / hints:
For some reason I cannot download this file. Can you add it here?
SVG raw content:

```xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="343px" preserveAspectRatio="none" style="width:533px;height:343px;background:#000000;" version="1.1" viewBox="0 0 533 343" width="533px" zoomAndPan="magnify"><defs/><g><rect fill="#152215" height="1" style="stroke:#152215;stroke-width:1.0;" width="1" x="0" y="0"/><rect fill="#FFFFFF" height="73" style="stroke:#FFFFFF;stroke-width:1.0;" width="532" x="0" y="0"/><image height="53" width="450" x="1" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcIAAAA1CAMAAADlJhtiAAADAFBMVEX4Z1QAOpD//9tmtv/b//8AADo6AAD///8AAAAALEnbkDqQ2/+QOgA6kNu2ZgBmAAD/tmb//7b/25AAZrYAAGa2////aVQAJ0j5Z1T/alSvVVAAI0ZmOgA6ZpD3Z1Q6Zrbbtma22/+2Zjr3ZlMAOmb+////27YAOjrbtpD4ZlS229tmtts6kLYAZpC2kDpmkNv4ZlP/bVSQZjrb/9sAKkg6ADr4Z1P3VkH3ZlT3VT/3VkD3WEMQMEmhUk86kJA6OgC2kGY6Zmb3YEz3Xkn3ZVH3XEf3Y0/3W0b3V0L3ZVL3ZFH/tpBmZmaQ29vb25BmkLaQttu225Db/7YAZmb+9fT3XUj5gXH3Xkr3Vj/3WEL7vLP3XEj3VUD3X0v4ZFD3X0r///73YU33ZFD7Z1TbkGaQZgCQkDpmtpBmOjrb27b4W0b5g3P5lIX3Yk795+T3X0n3WUX5i3v6loj6n5L4bVr7x8D3YU73ZE/7vbX8vLT3Uz7++/v3Z1P6lYf3XUf939r+7Or+9PL++fj3VD/6koP+9vX7q5/6l4n7ua/8xb74Xkn95uP2VkD+/Pv3Wkb2WEP7sKb7u7L92tX94t35hHX8w7z92dP6pZn80Mn4aFP5f2/3aVX//v/7r6T5nI/4aFX+//73YUz+/v73WkX8zsf5Z1P5dGL7urH93Nf97+3+/Pr3WUT7v7b+7uv2VT/96uf6npH5hnb+aFMAIkb99vT3V0EAKEj3cF4AJkf7ubDfYVGzVlD4hnatVFCXT08AH0b/aVP8y8T++/qaUE/+7+0AIkeoU1D4YU33XUn4cmD3Y1D4bVv4emi2tpCQtv//29vb2/+2kJDb29u2ttu227Y6AGY6OpC2/9tmtraQkGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmvaTnAAANRklEQVR4Xu2ca4wkRR3Aq58z0zOzA7e7zL5uNseyx/tiIsKehGDC4+CQ6CdECCJBjYbwwYSESDSaGI2JgolfkOAH4gNjVPjAQzQoJIJ3EXIPPLgHd9ztws3uLbO3u7Pz6q5+WNVVXd1d0zM9u7nZRzK/5Larq+pf///Uv7oeM/8+IQF6bG3k0J0euuuU3ijYUEQ+o8dWo+fCLU/PhVueLrowPShcYvGZPS443XOhZpXApw6fG03KloEkZMCoEedzXLNHiK64cHgX6mddV7Rrk3xRJNB0L4a2wBVQ9u9+aEoQ7CHLq9kKOgTSDqo2LKhunjaIMxNGX6jmpkTKrsVIIXQiYIeKwoz/lzIF9rt56aOhbBBxqEjUVRNqScF6a5fEl0Wh2WUJV0xXshW+DOBsOtB0KUtr8mi2baChgHSW0Z1kKwb6o+OqUDMzQlmzFbdk4yGWRuKZv0qk0LzkTWOF3x4eRmhPvsCKpnYOPFbvH3tsWZtQpOXrz7IC/myJTJEzqp4VxBX4TGcPuVq7yH26ZItZEKSWhJN/exaMNzIph9bkkXUJSWKd+E61dBH9ERI26rLG7mO6qDhLeme2dBtiaSRZYU1GRos0oJRG/OS7QzRj4vaLbpqqTm3fbu667fP3Xn39f68P1Q+TkxYWgVDnBpuEVzF4tWAjH6SEkCNscYlm1QB4AM+C6C+dB11y8zcAcNJaWMQ13Va4RdO2kLd8nVYSQHtcQB8uZfzv0DYJlWxrenjbGNREUKMrR9gxiBZwJptClqOcoWCKKXBMOIrbIJZSAabVbUioZ5qM7IDoifSSP8Lvo8sPv+XMufcTQ4+ID7JaT504cgYGJlN+Ik1XEoaGVy3rqmM0A02QEsSzK85VTcmGaP+iedMGLsJZ5IrKwWjRrUeKoVZFU+J4UbfdGkBLlwBAs2NiRcrUHFt2Wx0/7ahKA+LedSekdGXnzIrUV8k6WDk3RccZlFCFBQ2pA8NFiGdjTyOTI9Uk5I30surJovnb9Q/6ICzlKUBri0THF7aUNMC0koYyxPzV0sKFsoU/zDabuPDWoS/fDwqPP8LqPTJ/5BC7aXJhqoGXIvZBqal4gZRs/IkVA3VR2VsAgdtjZfwPfZqqPSgXUQtj1jnWoZpd+INzV2ls1nRrol7JDxyvSraWvOkV0fUl7pzB7CmsAlAXphowYU9MJwWIrXFN8ok1qH7HGyZaevsqIh5InkaJybm10pW+bJFY78pK9q2vD8rn8FgMpDwFIyfS9zzvdjCylKqhkn2koWCXrYLotTAtOlhZygF47O79xjX3PfPy8qt+vXfu2FlcZHf80HEcvBSZeGi5QLUuiniBrKiaCDVdTgC0Zsl6znvK5GXdQv9EdWmipJRXAJQ0vd7As6qLWlt89jeDA6dITTFjpM9XhLRpKwMz0li1YttWWt85X18EclrFZrtrimQkkvoSdOqKiaxxTWLEGQTkxs0HLytDUaqP1Qw0SqhGJkeGumxdPIsGGJMVnY+Q9aqRsFlKpwoacv5kpnLQBNRSFyZJGgKiYUeva+3pwIUTwtT94OVgNQD2jYwcYTe8C0UT7SNod2KyguKAsbIqoPGLbLYkqSZY40LNU5cVdLEP95AsLmQUJNVXz4NllT02sjX596fL50VSM+OkRN02VSMrLK44C0BAfSxbK/gEKiN3ArI70oCmVpKGjQcU6hgR/2HEGQTlHW9mPlbgF48Bx0xamq+RypFPVk+sbL/xpMpkVStdByk92/BTfVQBVBazIpailrowSdIQ6jdxLS6Ml7ky/+jX+DwA/nrNV/BqGYm7HtkL7DEV6gCOzgG8GTHozqOWPnNpaP4lOxHrcKVk4e3NtDAcnPg+uM5f5x1dL6dNYOBmkyZQ0WAGBtkjmFIDXxoiLnTKQBe90SVbwRNqnEE5abpPVESQh4JoqyGNRI5UU2pTM6+pQdkleHkj43YpTfkKgO4uC9RSCpWkDVnqWnYzHbhw6vGHn+XzED/+7P4Cn+eBejIXsgaqHz9IPiQcNfpMbDSsWoEtJ0JFMn271IQ1gm5G5os7BjO0JLy1NUBtR+XuhIq6R6+jD2DDbB/y1PigCZK2eCeAwybqJrfvGNDOje92BIHtAGMNwh2e+J0oOanyZUxjUA6j7LsUediThTZQ1BNWvRxIYRGigLqOWuo1QLW6DWmDmVbHjbbEunDimAS+yWdiDrUcMmZoyANQvQKMjf0ZbetRd6tFfRlUZTAoHbHLgRl4IDWMBzmoyInZjGifE4QzSWYb155yBjpAGLnRFpEJS6o1WgaSNXNWANWk9JqgzjloFy983RvtuOdzUuWj/SJrKN6gTBIPjstkUIPSDNPI5Nw6UEFGiktMNifttq08PhL5KU+BIo5rpGViqYsneTtpSJg3WnZpO+J2pOqfqncFawT4zkvexiqc70IOAgFSeMc8XBTzZ5vshFpiGWfiwwjav5+z5VRNtPa+0lTRrWmj7eFZabQ4cdLPT2ulwVlcHSkAeEvLgXYUez+k1nq0MUiDieARBG9IfY2uHM22hgK6WAFKdfjd8AUhzoVze564PVjDp7Dng3+RVJQLeVAnrmnH3DXWalBrucB5EcZObheQOF2fWaFPfRMz269ouRiG0JKTFiiY5tqiOrrAWg1qLwfFHJ0rUSpc1F3iXDj81G18lsdZ/2TYllr/SVmYA3jh2hys1aAYOZHtwcUWv7h0h1gXCi0ftYHpGT4rmrNDNwDrcv70uIGs1aC2corunQlQKlzUXVrYw/i22NJPeuE/fFYLZmeBSL4t3SSs1aC1ynWVuKfwR07Lp1C7js/psRHEfcFWfutosEKQ3a8Ky24i7knu0VXinkI1+08+yyM10nKO7bGOxLnwqFXlszwOeL8H99hQYidBIfi1bJCf1p7js3psBHFPIfjY/iWfRSiegHxWj40gbjtTKSUn3suRbUuIJ944doYmY5/kHt0k9ikE+17/efO2pQBWslk+s8eGEO/Cowfs50Dhq+HMmScP/iMQPdNjA4mdSAEoHT/wg+fL4bn0S4de92+aJtJEqh4/NDCa1CAVWYKQMpRWu6g2rEKK07el6cCFYC7x4ffuerGwl0bLFJZ/cZV+OPAdN+9CDSx1FgQCJUhCWljCy7dY7FTnrEKK07e14bs/klNq4smnc/fRu0ePPz/5Nvf7aQj86zuBRp+3CkJPmmny0ypLEHK26UT9HNCqHUIrqQg4fT7tNWxOOnIhOPoz441Tv/qkf264+ukn+7Y7bzZvcALY4jbaQY6uBC48+EWHcIIi1L0GwrRoh9JKqhlen097DZuTTiZSRGnxvf7i6RNzS7PW+dPvvB9eGPlh4Dg1OktJhoinNnJJQUvcodSHKkDKDOB3H0SjSo6WJOGXyxZuAO4qGeHtFm3HMiMnQSKFGV4p4AAE1IBtRVXl9fm6mKVWoYIzHjgsqlabljYDsYEXweIrq/jp419sagq8SNTVhFZSqiRO3v3kOAjdYVHqiTp+LYFFWNNEIJ69bdi944Wxc2HzLPAh1QAAtchi4bno+mZ9VNe/P0c1SCR6Hsr0vQDWEjXF1bJpWNXQOuo6j/dgM+YtlRKouFua6fyl+PfP6fwk6oWb7cFhnOnGd2oOjiEEgQQrl3MagLCUv1peWIR2/901Ubq4TyHNTZpyZhvQFPwT+fKUht/BSBdFOUGkMOla5l0cMYgWPFOURL5ahD6q61pPA8hNGOmHEiBVHBvG4RS0JWYKkd4sdDiRtoUblVC+/KCpKNlUjUSfe+Hyfry6W02s09BCL+FHsbcNu/cD4MNh826wvtsOdH4tWRaksfAWF13frM/2dFENkEbPW/S9AK8lyEwhhm8SuuDCrDCPp7SabXtx8uTix6tjUnqCLIQswcrbh92zMHYubB5LYRdqeCK1LODFwjfC1SL0sYB7qsGm0fPeewFeS5pvymaiC9Yg7+NAeSnpRZ+zIHQapQ4T9r6IaTQYz94u7N4LY+fC5j0cHb+CiPfFJBaeqxahj+nyLXWj5733AryWAqZsJrrgQgOk0UcuXyWMyCT6nFwCUeq2uUfXaSAYS4Si2NuF3QeC54Nh8/j+Vic7YoBrANx9AC9YNBY+VC1Cnx9w72nwPMneC3Bb8k3pNGhoXWjhwr+80If4PZ/dEZdYeKpU3l8petHn7sWPUlfQPKvo9EjoJQJR7IRWYfeB4HkubB6At8V0UQXHBXX/PWUvFj5crT9SH9VFLfWi5733AryWfFNuoTZuCqLXwnt3yof6+/u/sCfqhZgmuLWwwn4lTuZqg1WJXmT9tCR4//GBOklmOz8B/PKanNXRZJuvnMwv5N/Fr1ujA4BQ8ppzQBVNfoKtmBI6XZrCeVTuAAtLWWjtNkdXwFh6GsCRspCvSCBcbSlCn+HpOk81WGX3dAU1Q7DufAd6LX3ETIkO594gos+F4OGX3Ms8K2kHfy6MJu4d1rjyC8166+saLVy4KjpyYdz/yBFXfqFZb33dY/2+aRAXIv/HGEZc+YVmvfV1jXV7Cnt0ixY70h5bh54LtzzhibTHFuT/mGwAUijVTY4AAAAASUVORK5CYII=" y="10"/><image height="62" width="62" x="450" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD4AAAA+CAYAAABzwahEAAACn0lEQVR4Xu3PQa7bQBADUd//0slKmwcUONJ3gCR2AVw0ye6RXr8+lJfGp/D98U/j++OfRv746/V6JPflbv/CvVMVmXjgVO7L3f6Fe6cqMlmLUv3TDxH7zovVz2QtSvX/+R/3ByovzL1T+ZqVeZGJiz5QeWHuncrXrMyLTFz0gcpPqTvma1bmRSYu+kDlp9Qd8zUr8yITF32gctGvufw1K/MiExd9oHLRr7n8NSvzIpO1KKtv/tN5sfqZrEVZffOfzovVz+RavCv33z3fVZGJB07l/rvnuyo6+SE+XB9Us/67+WOX/fD6oZr1301erg9YvthXhbnzYvUzqQ9cvthXhbnzYvUzWYsX9tasvyTmpUU2jg/QW7P+kpiXFtnwgIdLhT1lz/nUNy8ycdGHSoU9Zc/51DcvMvHwkphX7+I0v6siEw8siXn1Lk7zuyo6OcSHfNB5+Rfmdb9YvU4O8YN80Hn5F+Z1v1i9TFw8fXj19GvWl8rLl2x44O4HVU+/Zn2pvHzJhh9Qsi/lX5g/nUtFJh4o2ZfyL8yfzqUik1o8Phz5Xb+wv2bJpBYvv/KLyu/6hf01SyYuns7K3Fm/8lL1F9nwwOmszJ31Ky9Vf7EbD/EDnBerX3n5shsP8QOcF6tfefmSjevAXRXVW/6a9c2LTDx8qqJ6y1+zvnmRyVqU1a9cf/3QReXlSzZOD1ysfuX6f92P+0GVOytz56e6S2540Icqd1bmzk91l9zwoA9V7lwq7JXsO+tLJi56sHLnUmGvZN9ZXzJx0YOVL2r/lNrXN5dMXPRg5YvaP6X29c0lk7Uo9tcHPPXVaS6ZrEWxvz7gqa9Oc8nEA6dy31m/sF97d/2LTHzwVO476xf2a++uf9HJf873xz+N749/Gh/7478BF/nNnZYDEesAAAAASUVORK5CYII=" y="5.5"/><rect fill="#000000" height="196.5781" style="stroke:#000000;stroke-width:1.0;" width="532" x="0" y="73"/><text fill="#33FF02" font-family="sans-serif" font-size="12" font-style="italic" font-weight="bold" lengthAdjust="spacing" textLength="107" x="5" y="90">PlantUML 1.2023.1</text><rect fill="#33FF02" height="22.6094" style="stroke:#33FF02;stroke-width:1.0;" width="149" x="5" y="101.0938"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="147" x="6" y="116.0938">[From string (line 6) ]</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="4" x="5" y="137.7031"> </text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="71" x="5" y="155.3125">@startuml</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="4" x="5" y="172.9219"> </text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="67" x="5" y="190.5313">class Foo</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="4" x="5" y="208.1406"> </text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="4" x="5" y="225.75"> </text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" text-decoration="wavy underline" textLength="8" x="5" y="243.3594">+</text><text fill="#FF0000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="95" x="9" y="260.9688">Syntax Error?</text><rect fill="#FFFFFF" height="73" style="stroke:#FFFFFF;stroke-width:1.0;" width="532" x="0" y="269.5781"/><image height="53" width="450" x="1" xlink:href="data:image/png;base64,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" y="279.5781"/><image height="62" width="62" x="450" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD4AAAA+CAYAAABzwahEAAACn0lEQVR4Xu3PQa7bQBADUd//0slKmwcUONJ3gCR2AVw0ye6RXr8+lJfGp/D98U/j++OfRv746/V6JPflbv/CvVMVmXjgVO7L3f6Fe6cqMlmLUv3TDxH7zovVz2QtSvX/+R/3ByovzL1T+ZqVeZGJiz5QeWHuncrXrMyLTFz0gcpPqTvma1bmRSYu+kDlp9Qd8zUr8yITF32gctGvufw1K/MiExd9oHLRr7n8NSvzIpO1KKtv/tN5sfqZrEVZffOfzovVz+RavCv33z3fVZGJB07l/rvnuyo6+SE+XB9Us/67+WOX/fD6oZr1301erg9YvthXhbnzYvUzqQ9cvthXhbnzYvUzWYsX9tasvyTmpUU2jg/QW7P+kpiXFtnwgIdLhT1lz/nUNy8ycdGHSoU9Zc/51DcvMvHwkphX7+I0v6siEw8siXn1Lk7zuyo6OcSHfNB5+Rfmdb9YvU4O8YN80Hn5F+Z1v1i9TFw8fXj19GvWl8rLl2x44O4HVU+/Zn2pvHzJhh9Qsi/lX5g/nUtFJh4o2ZfyL8yfzqUik1o8Phz5Xb+wv2bJpBYvv/KLyu/6hf01SyYuns7K3Fm/8lL1F9nwwOmszJ31Ky9Vf7EbD/EDnBerX3n5shsP8QOcF6tfefmSjevAXRXVW/6a9c2LTDx8qqJ6y1+zvnmRyVqU1a9cf/3QReXlSzZOD1ysfuX6f92P+0GVOytz56e6S2540Icqd1bmzk91l9zwoA9V7lwq7JXsO+tLJi56sHLnUmGvZN9ZXzJx0YOVL2r/lNrXN5dMXPRg5YvaP6X29c0lk7Uo9tcHPPXVaS6ZrEWxvz7gqa9Oc8nEA6dy31m/sF97d/2LTHzwVO476xf2a++uf9HJf873xz+N749/Gh/7478BF/nNnZYDEesAAAAASUVORK5CYII=" y="275.0781"/><!--SRC=[Iyv9B2vMSClFv-9IuD96GbmvgMab2iMPAQaW6G00]--></g></svg>
```
Can confirm. Will take a look.

Fix patch:
diff --git a/usvg-text-layout/src/lib.rs b/usvg-text-layout/src/lib.rs
index 602002aee..7482bbedf 100644
--- a/usvg-text-layout/src/lib.rs
+++ b/usvg-text-layout/src/lib.rs
@@ -805,7 +805,13 @@ fn convert_decoration(
 
     let mut path = PathData::new();
     for dec_span in decoration_spans {
-        let rect = Rect::new(0.0, -thickness / 2.0, dec_span.width, thickness).unwrap();
+        let rect = match Rect::new(0.0, -thickness / 2.0, dec_span.width, thickness) {
+            Some(v) => v,
+            None => {
+                log::warn!("a decoration span has a malformed bbox");
+                continue;
+            }
+        };
 
         let start_idx = path.len();
         path.push_rect(rect);
@@ -1843,7 +1849,12 @@ fn apply_length_adjust(chunk: &TextChunk, clusters: &mut [OutlinedCluster]) {
         }
 
         if span.length_adjust == LengthAdjust::Spacing {
-            let factor = (target_width - width) / (cluster_indexes.len() - 1) as f64;
+            let factor = if cluster_indexes.len() > 1 {
+                (target_width - width) / (cluster_indexes.len() - 1) as f64
+            }   else {
+                0 as f64
+            };
+
             for i in cluster_indexes {
                 clusters[i].advance = clusters[i].width + factor;
             }
diff --git a/usvg/src/geom.rs b/usvg/src/geom.rs
index b6c0bf900..31c6a2ca5 100644
--- a/usvg/src/geom.rs
+++ b/usvg/src/geom.rs
@@ -78,7 +78,7 @@ pub trait IsValidLength {
 impl IsValidLength for f64 {
     #[inline]
     fn is_valid_length(&self) -> bool {
-        *self > 0.0
+        *self > 0.0 && self.is_finite()
     }
 }
 


Test patch:
diff --git a/tests/integration/render.rs b/tests/integration/render.rs
index 45d37e3e1..9572eb69f 100644
--- a/tests/integration/render.rs
+++ b/tests/integration/render.rs
@@ -482,6 +482,7 @@ use crate::render;
 #[test] fn a_text_decoration_017() { assert_eq!(render("a-text-decoration-017"), 0); }
 #[test] fn a_text_decoration_018() { assert_eq!(render("a-text-decoration-018"), 0); }
 #[test] fn a_text_decoration_019() { assert_eq!(render("a-text-decoration-019"), 0); }
+#[test] fn a_text_decoration_020() { assert_eq!(render("a-text-decoration-020"), 0); }
 #[test] fn a_text_rendering_001() { assert_eq!(render("a-text-rendering-001"), 0); }
 #[test] fn a_text_rendering_002() { assert_eq!(render("a-text-rendering-002"), 0); }
 #[test] fn a_text_rendering_003() { assert_eq!(render("a-text-rendering-003"), 0); }
diff --git a/tests/png/a-text-decoration-020.png b/tests/png/a-text-decoration-020.png
new file mode 100644
index 000000000..f71338765
Binary files /dev/null and b/tests/png/a-text-decoration-020.png differ
diff --git a/tests/svg/a-text-decoration-020.svg b/tests/svg/a-text-decoration-020.svg
new file mode 100644
index 000000000..d63f452fc
--- /dev/null
+++ b/tests/svg/a-text-decoration-020.svg
@@ -0,0 +1,10 @@
+<svg id="svg1" viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg"
+     font-family="Noto Sans" font-size="48">
+    <title>Text with text decoration and only one chunk</title>
+
+    <text id="text1" fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing"
+          text-decoration="underline" textLength="8" x="5" y="20">+
+    </text>
+    <!-- image frame -->
+    <rect id="frame" x="1" y="1" width="198" height="198" fill="none" stroke="black"/>
+</svg>
\ No newline at end of file