Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Bug IndexOutOfRangeException on DrawUnderlineMesh with long texts

Discussion in 'UGUI & TextMesh Pro' started by BBO_Lagoon, Mar 7, 2023.

  1. BBO_Lagoon

    BBO_Lagoon

    Joined:
    Mar 2, 2017
    Posts:
    199
    Hi,
    I have a section in my game with a quite long legal text (≈30000 chars), and the underlined links breaks the text.
    Here is the error stack trace:

    Code (CSharp):
    1. IndexOutOfRangeException: Index was outside the bounds of the array.
    2. TMPro.TMP_Text.DrawUnderlineMesh (UnityEngine.Vector3 start, UnityEngine.Vector3 end, System.Int32& index, System.Single startScale, System.Single endScale, System.Single maxScale, System.Single sdfScale, UnityEngine.Color32 underlineColor) (at Library/PackageCache/com.unity.textmeshpro@3.0.6/Scripts/Runtime/TMP_Text.cs:5762)
    3. TMPro.TextMeshProUGUI.GenerateTextMesh () (at Library/PackageCache/com.unity.textmeshpro@3.0.6/Scripts/Runtime/TMPro_UGUI_Private.cs:4198)
    4. TMPro.TextMeshProUGUI.OnPreRenderCanvas () (at Library/PackageCache/com.unity.textmeshpro@3.0.6/Scripts/Runtime/TMPro_UGUI_Private.cs:1670)
    5. TMPro.TextMeshProUGUI.Rebuild (UnityEngine.UI.CanvasUpdate update) (at Library/PackageCache/com.unity.textmeshpro@3.0.6/Scripts/Runtime/TextMeshProUGUI.cs:216)
    6. UnityEngine.UI.CanvasUpdateRegistry.PerformUpdate () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/CanvasUpdateRegistry.cs:215)
    7. UnityEngine.Canvas:SendWillRenderCanvases()
    Here is a sample text you can use to reproduce the issue, on my project if I add one more character in the following text, it throws the error.

    ssssssssss ssssssssss ssssssssss ssssssssss ssssssssss ssssssssss ssssssssss ssssssssss ssssssssss ssssssssss ssssssssss ssssssssss ssssssssss ssssssssss s
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce varius, nibh cursus blandit accumsan, ligula erat vehicula est, ornare ornare nunc quam quis risus. Mauris auctor venenatis nunc, nec condimentum mi fermentum ut. Phasellus lectus ex, suscipit eget mollis ac, tincidunt vitae enim. Donec tellus urna, hendrerit quis volutpat ut, congue id metus. Maecenas hendrerit vestibulum neque, quis sagittis elit congue vel. Suspendisse tincidunt porttitor vestibulum. Morbi nunc metus, pellentesque sed interdum at, tincidunt eu massa. Quisque varius vel justo a auctor. Morbi rutrum ullamcorper accumsan. Quisque ut lacinia eros. Sed tincidunt eu nulla sed hendrerit. Proin iaculis felis eget ante pharetra sollicitudin. Etiam scelerisque neque <u>eu eros</u> rutrum feugiat. Cras tristique venenatis magna, in ultrices nulla bibendum vulputate. In venenatis mollis lectus, ac feugiat ex tincidunt quis. Cras lacinia elit justo, at dictum urna molestie sit amet. Mauris eget sem velit. Vestibulum eu vestibulum arcu. Vestibulum interdum leo id cursus sagittis. Etiam pharetra neque et leo sagittis, at sodales erat convallis. Mauris ut mauris neque. Proin bibendum, neque in porta gravida, lorem nibh semper turpis, vitae elementum ipsum dui ut ipsum. Aliquam sem nisi, eleifend eu pharetra non, malesuada sit amet nunc. Donec cursus ex vitae velit pulvinar, vel malesuada sem blandit. Nulla non porttitor neque, sed malesuada neque. Suspendisse et sodales libero. Nulla facilisi. Fusce elementum egestas pellentesque. Suspendisse sed mi bibendum, fermentum ipsum laoreet, rutrum dui. Nam mollis ligula ac erat viverra ullamcorper. Sed iaculis, dolor sit amet tincidunt elementum, sem arcu sagittis nisl, sit amet malesuada lectus diam et odio. Nulla rutrum dignissim leo, quis laoreet tellus iaculis sed. Aenean maximus tristique lacus, at placerat tortor lacinia eget. Etiam nulla nisi, feugiat non cursus a, vulputate id arcu. Quisque tempus velit quis augue porta congue. Nam vel aliquam mi. Duis in lectus sed metus aliquam ultricies. Praesent finibus, nulla sed bibendum varius, nunc mi vestibulum arcu, ac pretium justo magna ut lacus. Phasellus vel tincidunt est, eget mollis lorem. Vivamus ac quam vel quam dignissim cursus id nec velit. Nulla vel mattis erat. Morbi mollis non est commodo pretium. Curabitur finibus ante sed ligula consectetur bibendum. Maecenas pellentesque, orci rutrum pretium suscipit, neque arcu dignissim mauris, vel imperdiet est metus a enim. Duis et dictum leo, fermentum iaculis purus. Aliquam et nibh lacus. Phasellus semper arcu nec neque lobortis tempor. Proin leo turpis, vehicula eu dignissim quis, condimentum et lectus. Donec dignissim odio vel purus laoreet, nec ullamcorper nulla vehicula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Cras scelerisque elementum aliquet. Suspendisse vitae gravida magna. Mauris eget tempor tortor. Donec blandit fermentum lectus, a egestas augue fermentum ut. Pellentesque molestie, magna at cursus tincidunt, sem urna placerat nibh, eget efficitur magna nisl at felis. Ut luctus tellus est, quis sagittis massa pretium rutrum. Nulla est massa, vehicula id aliquam ultrices, cursus in felis. Quisque at tempor erat, in lobortis risus. Morbi mollis scelerisque lacus, eu sollicitudin libero volutpat sit amet. Sed justo nisl, aliquet nec nisi at, ullamcorper blandit massa. Aenean ultricies eget lorem at blandit. Proin varius massa posuere lectus suscipit eleifend. Mauris a ex sapien. Donec a libero est. Vivamus efficitur tempus felis, sed gravida quam vulputate sit amet. Vestibulum ut orci mi. Nunc bibendum, libero sit amet porttitor vehicula, libero massa commodo justo, non vehicula est ex a tellus. Curabitur convallis sed neque a dignissim. Ut laoreet, nibh sit amet condimentum facilisis, dui sapien sodales quam, facilisis volutpat lorem leo non nulla. Donec pharetra ex et risus fringilla elementum. Mauris quis ultrices elit. Quisque condimentum ut urna vel molestie. Ut suscipit, mauris eu iaculis cursus, elit nibh commodo libero, sed suscipit nisi mi non sapien. Etiam sed justo sit amet ligula placerat laoreet. Proin eu orci viverra, euismod elit at, feugiat felis. Mauris convallis laoreet gravida. Duis fermentum condimentum ante eu tincidunt. Aliquam placerat dictum mauris, in imperdiet enim pellentesque sed. Vivamus gravida metus et magna eleifend, et elementum nunc pretium. Cras consectetur orci in mi commodo, ac aliquam est suscipit. Suspendisse sed libero pellentesque, ullamcorper eros a, suscipit odio. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Integer magna erat, elementum nec ante nec, rhoncus lobortis ipsum. Suspendisse ultrices ultrices eros a luctus. Phasellus suscipit dolor augue, id hendrerit mauris pellentesque a. Maecenas viverra, mauris eget lacinia tempus, lorem leo mollis dolor, convallis suscipit nisl augue sit amet arcu. Vivamus ut ultricies nisl. Mauris risus sem, elementum in felis a, posuere auctor purus. Etiam iaculis nisl eu luctus tristique. Praesent lectus nunc, bibendum ac diam eget, rhoncus lobortis risus. Morbi hendrerit eros lacus, nec pulvinar erat ultricies vel. Interdum et malesuada fames ac ante ipsum primis in faucibus. Vivamus mollis cursus pulvinar. Nam lobortis convallis massa eu rhoncus. Donec non ligula vel felis varius tristique. Phasellus pellentesque gravida purus. Integer in ullamcorper nulla. Curabitur mi magna, malesuada at nunc sit amet, dictum luctus elit. Vivamus nec suscipit neque. Mauris arcu nunc, auctor vel laoreet quis, cursus vel erat. Cras eleifend vitae erat et varius. Nullam in magna vel risus ullamcorper vestibulum. Vestibulum id posuere ante. Donec rhoncus sapien ac consequat posuere. Aenean sed nunc eget lectus commodo vehicula sit amet sed mi. Aenean eget dignissim turpis. Donec molestie purus risus, sit amet venenatis enim sagittis id. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum in justo purus. Vestibulum pretium nisi at lorem ornare, vitae mattis lectus fringilla. Aenean augue erat, congue eget sem in, viverra scelerisque risus. Sed dictum elit ut nisl tincidunt faucibus. Nulla pulvinar consequat nibh vel malesuada. Praesent massa dui, suscipit eu sem ut, gravida tincidunt sem. Curabitur pharetra purus quam, eget fringilla leo viverra sed. Aenean ac laoreet purus. Donec luctus eget sem vitae laoreet. Vestibulum interdum pharetra diam, in pulvinar eros vehicula nec. Duis vel posuere velit. Fusce egestas volutpat tincidunt. Sed id odio blandit, sollicitudin elit nec, rutrum mi. Nullam a dictum tellus, ac maximus sem. Morbi imperdiet mi a justo imperdiet, sit amet sagittis nisl commodo. Nam sit amet justo urna. Ut mollis nibh suscipit porta ultrices. Praesent a accumsan elit. Integer gravida erat risus, ut vulputate magna dapibus in. Nunc tempor blandit dictum. Duis ut enim at felis feugiat vehicula id hendrerit felis. Aliquam ac sodales risus. Phasellus convallis, erat sed commodo scelerisque, augue magna dignissim odio, ut vehicula felis tortor eget erat. Aenean non nibh ligula. Suspendisse fringilla felis in sem ullamcorper posuere sed id felis. Aliquam molestie, quam eu dapibus pharetra, sapien neque pulvinar lacus, at porttitor tortor lorem nec ligula. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Phasellus suscipit felis pretium aliquet mollis. Integer iaculis suscipit tellus, in pretium urna molestie vel. Vivamus sagittis est non nulla rhoncus aliquet. Nulla mattis felis at pulvinar suscipit. Phasellus ornare euismod bibendum. Aliquam nec metus eu nisi pretium vulputate sed eu sapien. Integer sed diam non elit mattis molestie eget sit amet diam. Pellentesque eu risus faucibus, finibus orci vitae, mollis elit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Cras pretium vulputate lacus, a ultricies turpis elementum at. Sed lacinia sapien ac nisi ullamcorper condimentum. Aliquam massa urna, rhoncus ut velit ut, vulputate consectetur eros. Donec malesuada, justo eget eleifend cursus, ex massa efficitur nisl, ac ultrices augue elit vitae enim. Vivamus gravida lacinia magna, ac ullamcorper libero elementum id. Duis et faucibus ex, vel convallis velit. Curabitur ut quam pretium, lobortis turpis eget, blandit erat. Cras at tempus felis. Maecenas lorem justo, vestibulum sit amet nibh eu, iaculis laoreet turpis. Etiam interdum in mi ornare fermentum. Cras ultrices erat et ipsum suscipit scelerisque. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Morbi sollicitudin, dolor a scelerisque pulvinar, purus dui interdum erat, sed aliquet arcu est mattis leo. Morbi volutpat, nisi non congue viverra, dolor lorem tempor lorem, eu tincidunt magna risus eget quam. Duis tristique, nulla vitae congue iaculis, mauris leo cursus ante, et aliquam eros nulla et sapien. Ut scelerisque luctus consectetur. Proin sapien nisl, fermentum vel ullamcorper a, tincidunt vitae risus. Quisque molestie rhoncus sapien id faucibus. Pellentesque at lorem lacus. Fusce laoreet neque tortor, quis malesuada metus interdum eget. Integer eget nulla tristique, elementum dolor nec, venenatis quam. Vestibulum non justo a sem porta posuere eu eu lorem. Nunc massa tellus, euismod a ligula non, ultricies consequat nibh. Aliquam sed porttitor lectus. Ut ac pellentesque nunc, sit amet egestas ipsum. Praesent vel libero gravida, mollis leo id, finibus elit. Ut lectus magna, dictum a diam vel, ornare lacinia velit. Quisque fermentum enim vel magna tempor sagittis. Aenean malesuada augue tempus elit malesuada, quis vehicula nibh convallis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aliquam magna urna, porta non dapibus ut, sollicitudin non leo. Integer pulvinar porta enim tempor vulputate. Etiam vestibulum ante justo, sit amet sagittis enim pulvinar sit amet. Phasellus molestie dolor a justo pharetra pretium. Pellentesque a elementum erat, id commodo neque. Pellentesque tempus nibh quis ligula vulputate sollicitudin. Nam id nisi quis enim lobortis porta. Proin a nisl luctus sem hendrerit lobortis quis vitae tellus. Pellentesque eget velit nec ligula feugiat viverra. Aliquam erat volutpat. Sed lacus ligula, tincidunt at nisi ac, feugiat rutrum purus. Integer posuere tempor massa. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Suspendisse non venenatis turpis. Sed at lectus ante. Donec sagittis viverra orci, nec vestibulum felis vulputate eu. Nulla sed eros dolor. Maecenas dictum, massa sit amet blandit dignissim, urna justo dictum tortor, nec pretium erat diam non lacus. Pellentesque imperdiet vulputate orci ultricies congue. Sed eu mauris scelerisque, pharetra sapien et, ultrices nulla. Praesent fermentum elit ut efficitur aliquam. Suspendisse lacinia libero ut dui semper pulvinar. Vivamus fermentum porta augue. Suspendisse sodales sagittis viverra. Morbi commodo magna eu pellentesque viverra. Maecenas et suscipit massa. Donec consequat molestie purus. Phasellus dignissim nec ligula sed commodo. Donec sodales vehicula feugiat. Vestibulum quis odio mauris. Pellentesque ac vestibulum massa, vitae viverra nibh. Nunc at pretium magna. Fusce feugiat sem dui, quis congue nulla lobortis a. Sed elementum pharetra volutpat. Sed at efficitur libero. Aliquam ligula elit, aliquam id libero eu, iaculis eleifend ligula. Pellentesque enim velit, finibus id tempor semper, imperdiet eu lorem. Vestibulum condimentum iaculis diam, vitae lobortis dui molestie ac. Etiam auctor lectus eu pulvinar maximus. Pellentesque fermentum ipsum sed sollicitudin molestie. Etiam posuere in leo nec lacinia. Etiam congue vestibulum vestibulum. Nullam faucibus dignissim ante. In convallis pharetra metus sit amet facilisis. Nam vestibulum a tortor eget volutpat. Duis eu feugiat metus. Sed tempor nisi sed maximus commodo. Nulla quis consectetur nisi. In in tortor id lacus viverra posuere. Suspendisse venenatis euismod nibh, quis ultrices leo consequat eu. Nunc vel sollicitudin tortor. Fusce semper lorem id volutpat egestas. Vestibulum ut aliquet augue. Proin vehicula odio at sapien congue tincidunt. Morbi dictum luctus tortor. Cras imperdiet quis tortor quis volutpat. Curabitur faucibus dui eu mi euismod molestie. Fusce vehicula est in sapien pulvinar aliquet. Sed quis commodo tortor. Integer tincidunt placerat elit a finibus. Curabitur vel blandit arcu, ut rutrum eros. In hac habitasse platea dictumst. Nulla posuere lectus mi, in rhoncus purus convallis nec. Curabitur dignissim ultrices iaculis. In pharetra metus sed interdum semper. Ut porta mauris eu diam tincidunt, imperdiet maximus risus sagittis. Aliquam erat volutpat. Interdum et malesuada fames ac ante ipsum primis in faucibus. Mauris ultricies dictum tempor. Suspendisse hendrerit metus mauris, at volutpat odio venenatis nec. Fusce aliquet porta pretium. Nulla tincidunt sagittis risus in posuere. Integer non lectus id elit aliquet tincidunt. Nullam tempus dolor at ipsum pellentesque, eget aliquam nunc dapibus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Interdum et malesuada fames ac ante ipsum primis in faucibus. In sagittis ut sapien sed dictum. Aliquam ac diam maximus, pharetra nunc vel, tincidunt felis. Morbi id libero magna. Nulla facilisi. Praesent tincidunt pulvinar leo, ut commodo mauris hendrerit non. Praesent nec nisi ultrices, rhoncus metus sed, lobortis purus. Mauris porta quam sed ligula viverra viverra. Sed pharetra, mi sit amet luctus consectetur, arcu leo imperdiet dolor, ut pulvinar felis nunc eget nunc. Aenean luctus et risus varius semper. Fusce nisl purus, laoreet vel orci non, semper finibus mauris. Nulla mauris enim, luctus volutpat malesuada quis, facilisis vel nulla. Vivamus sollicitudin, dolor eget euismod vulputate, odio ex cursus nulla, at elementum felis neque suscipit tortor. Maecenas congue, lacus sit amet convallis scelerisque, nulla elit imperdiet diam, ut pulvinar lorem diam ut neque. Morbi laoreet venenatis laoreet. Donec accumsan, neque a varius ullamcorper, nibh urna luctus turpis, at egestas arcu ante vel neque. Morbi et convallis orci. Morbi accumsan turpis nulla, nec condimentum nisi maximus a. Integer efficitur tempus nulla, eu vulputate orci faucibus ac. Nulla fringilla fringilla purus id cursus. Sed sit amet massa enim. Cras consectetur quam ut massa interdum, eu tincidunt leo hendrerit. Aenean eu semper purus. Nam in aliquet nisl. Suspendisse nec volutpat libero. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ut consectetur metus. Ut id justo id eros venenatis tempor vitae vitae lectus. Nunc et quam sed sapien eleifend accumsan ut non ligula. Aliquam porttitor libero felis, eu aliquam ex bibendum at. Integer posuere ipsum sed eros dapibus eleifend. Curabitur lacinia pretium vehicula. Maecenas aliquet ligula in est aliquet ornare. Aenean laoreet finibus egestas. Donec ut nunc eget quam sodales interdum. Etiam augue elit, tincidunt a rutrum ac, faucibus vitae ligula. Vivamus volutpat felis sed lacus luctus aliquet. Suspendisse auctor sollicitudin tristique. Proin in tincidunt nunc. Aliquam sit amet odio non augue aliquet aliquam. Vivamus placerat sapien et diam gravida, sed iaculis ex dignissim. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean sit amet interdum sapien, a fringilla lectus. Pellentesque imperdiet tellus vel suscipit maximus. Proin cursus leo id urna iaculis ultricies. Cras lacus ipsum, blandit sit amet dui sit amet, mollis blandit ipsum. Sed iaculis eget turpis a commodo. Vivamus volutpat purus elit, ac auctor dolor dignissim vel. Maecenas mollis hendrerit libero id viverra. Vivamus pharetra ut ligula vel vulputate. Mauris et tristique velit. Nulla hendrerit a est ac rutrum. Vestibulum sagittis neque nec sem faucibus, sit amet mattis enim molestie. Aliquam purus odio, luctus eget velit ut, pretium consectetur diam. Integer et vestibulum odio, et rutrum risus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec commodo diam in felis convallis, eu maximus quam eleifend. Vestibulum malesuada euismod sapien quis consectetur. Donec mattis congue dolor, in tincidunt orci dignissim mollis. Mauris eget venenatis nisl. Fusce ornare sollicitudin elit nec tristique. Vestibulum nunc nunc, pellentesque eget tempus in, porttitor eget augue. Ut euismod arcu lectus. Proin vehicula massa ac pulvinar dictum. Phasellus venenatis, eros eget finibus imperdiet, lectus dolor bibendum mauris, vel sagittis metus ex vitae tellus. Sed rhoncus feugiat rutrum. Phasellus quis erat sit amet nulla ornare pellentesque. Morbi eu vulputate mauris. Sed diam velit, ullamcorper ut orci nec, finibus posuere mauris. Proin quis efficitur neque. Ut dignissim sed justo ut interdum. Proin vestibulum aliquet risus ac malesuada. Mauris mattis enim orci, quis efficitur lectus facilisis id. Phasellus efficitur quam pellentesque ex tincidunt, semper faucibus velit tincidunt. Morbi feugiat cursus fermentum. Proin dignissim placerat libero, ac convallis lacus gravida a. Sed vitae pulvinar risus. Donec laoreet porttitor nunc a ultrices. Integer at eros eget ligula mollis auctor mollis ac augue. Suspendisse nec arcu augue. Nulla posuere a neque eu lobortis. Nunc cursus, dolor faucibus ultricies rutrum, dui nulla ultricies mauris, nec facilisis sem tellus vel massa. Sed lobortis est eu nunc placerat hendrerit. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque placerat ut leo eget pharetra. Vivamus vulputate quam a massa malesuada, at suscipit risus accumsan. Curabitur nec erat dictum, bibendum lectus vitae, aliquam magna. Sed feugiat laoreet tempor. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Fusce sit amet libero tempor, tempor nisl nec, ornare quam. Vestibulum congue purus in convallis bibendum. Suspendisse potenti. Mauris vulputate purus quis iaculis volutpat. Suspendisse sapien neque, bibendum et dictum ut, fermentum quis urna. Donec faucibus, orci congue lacinia pulvinar, lorem mi placerat ante, in cursus tellus velit vitae eros. Nulla enim risus, lacinia vel nibh et, posuere dignissim velit. Aenean ac eros nec leo fringilla tristique. Ut condimentum lorem sit amet turpis ornare, a rhoncus diam ultrices. Duis sagittis et sapien non laoreet. Proin ac tincidunt nibh. Sed suscipit, quam in tempus semper, felis velit hendrerit sapien, a mollis nulla sem in odio. Phasellus non posuere justo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nullam ac euismod lacus. Donec maximus pharetra neque in sodales. Nulla tincidunt sem ut dolor fringilla, consectetur hendrerit lorem suscipit. Praesent vestibulum, orci a aliquam euismod, nulla ligula tincidunt dui, eu porttitor libero lectus imperdiet ligula. Vestibulum sed ligula sit amet metus scelerisque posuere massa nunc.

    I use Unity 2021.3.18f1 with TextMeshPro 3.0.6 package.

    For now I removed the underlines on the links to get the text appear, but it would be nice to have underlines working ;)
     
  2. timmy2get

    timmy2get

    Joined:
    Mar 2, 2018
    Posts:
    12
    Same issue here
     
  3. Novack

    Novack

    Joined:
    Oct 28, 2009
    Posts:
    844
    Exact same issue, using Unity 2019.4.31f.

    Tried TMP 2.1.6 and TMP 2.2.0-preview.3