lovebrew / lovepotion

LÖVE for Nintendo Homebrew
https://lovebrew.org
Other
546 stars 42 forks source link

[Bug]: Printing Lots of Text Crashes #219

Closed TurtleP closed 11 months ago

TurtleP commented 12 months ago

Software Version

3.0.0

What Happened?

Printing LOTS of text on screen will cause the application to panic.

What was Expected?

Printing the same amount should not cause this issue.

Code to Reproduce

local text = [[
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Diam maecenas sed enim ut sem viverra aliquet eget. Arcu felis bibendum ut tristique et egestas quis. Pellentesque nec nam aliquam sem. Egestas purus viverra accumsan in nisl nisi scelerisque eu ultrices. Non enim praesent elementum facilisis leo vel fringilla. Euismod in pellentesque massa placerat duis ultricies lacus. Tempus imperdiet nulla malesuada pellentesque. Viverra nam libero justo laoreet sit. Dignissim sodales ut eu sem integer. Viverra nibh cras pulvinar mattis nunc. Augue eget arcu dictum varius. Metus dictum at tempor commodo ullamcorper a lacus vestibulum. Sociis natoque penatibus et magnis dis.
Sed blandit libero volutpat sed cras ornare arcu. Risus quis varius quam quisque id diam. Nisi vitae suscipit tellus mauris. Nulla facilisi etiam dignissim diam quis enim lobortis. A lacus vestibulum sed arcu non odio euismod lacinia. Ut tellus elementum sagittis vitae et leo duis ut. Ultricies mi eget mauris pharetra et ultrices neque ornare aenean. Suspendisse ultrices gravida dictum fusce ut placerat orci nulla. Sit amet risus nullam eget felis. Massa placerat duis ultricies lacus sed turpis tincidunt id. Non tellus orci ac auctor augue. Euismod quis viverra nibh cras. Et malesuada fames ac turpis egestas sed tempus urna et. Posuere urna nec tincidunt praesent semper feugiat. Nisl vel pretium lectus quam. Tincidunt tortor aliquam nulla facilisi cras fermentum odio eu feugiat. Purus ut faucibus pulvinar elementum integer enim neque. Odio tempor orci dapibus ultrices in iaculis nunc sed.
Eros donec ac odio tempor orci dapibus. Aliquam eleifend mi in nulla posuere sollicitudin. Non tellus orci ac auctor. Pellentesque massa placerat duis ultricies lacus sed turpis tincidunt. Id venenatis a condimentum vitae sapien. Nisl nunc mi ipsum faucibus vitae aliquet. Blandit turpis cursus in hac. Amet mattis vulputate enim nulla aliquet porttitor lacus luctus accumsan. Sed turpis tincidunt id aliquet risus feugiat. Sed ullamcorper morbi tincidunt ornare. Aenean pharetra magna ac placerat. Hac habitasse platea dictumst quisque. Arcu ac tortor dignissim convallis. Aenean sed adipiscing diam donec. Rutrum quisque non tellus orci ac auctor.
Massa enim nec dui nunc mattis. Amet risus nullam eget felis eget nunc. Nunc sed id semper risus in hendrerit. Euismod quis viverra nibh cras pulvinar. Ac orci phasellus egestas tellus rutrum tellus pellentesque eu. Odio euismod lacinia at quis risus. Porta non pulvinar neque laoreet suspendisse interdum consectetur libero. Iaculis eu non diam phasellus. Magna eget est lorem ipsum. At quis risus sed vulputate odio ut enim blandit volutpat. Pretium lectus quam id leo in vitae turpis massa. Pharetra vel turpis nunc eget lorem dolor. Interdum velit euismod in pellentesque massa placerat duis. Enim facilisis gravida neque convallis a cras semper. Sit amet volutpat consequat mauris nunc congue. Pharetra et ultrices neque ornare aenean euismod elementum nisi. Erat nam at lectus urna. Tincidunt eget nullam non nisi est sit. Vulputate mi sit amet mauris commodo. Est placerat in egestas erat imperdiet sed euismod nisi porta.
Dui sapien eget mi proin sed libero enim. Lorem ipsum dolor sit amet consectetur adipiscing elit. Eros in cursus turpis massa tincidunt dui. Nunc eget lorem dolor sed viverra ipsum nunc aliquet bibendum. Sed egestas egestas fringilla phasellus faucibus scelerisque. Consequat mauris nunc congue nisi vitae suscipit tellus mauris. Sed arcu non odio euismod lacinia. Aliquam purus sit amet luctus. Massa tincidunt nunc pulvinar sapien. Arcu ac tortor dignissim convallis aenean et tortor at. Egestas purus viverra accumsan in nisl. Quis enim lobortis scelerisque fermentum. Vel elit scelerisque mauris pellentesque. Tellus in hac habitasse platea dictumst. Non enim praesent elementum facilisis leo vel fringilla est. Sit amet commodo nulla facilisi nullam. Porttitor leo a diam sollicitudin tempor id eu nisl nunc. Phasellus vestibulum lorem sed risus ultricies tristique nulla. In cursus turpis massa tincidunt. Pretium fusce id velit ut.
]]

function love.draw(screen)
    if screen == "bottom" then
        return
    end
    love.graphics.print("FPS: " .. love.timer.getFPS())
    love.graphics.print(text, 0, 16)
end

function love.gamepadpressed(_, button)
    love.event.quit()
end

Console

Nintendo 3DS

Firmware Version(s)

11.17.0

Custom Firmware Version

13.0.2

Execution Method

Homebrew Menu

Notes

This also applies to the error handler. It renders too much text and will crash the system. So, if the user ends up with an error, they will accidentally trigger this issue.

Code of Conduct

TurtleP commented 12 months ago

There is a fix for this implemented, artifacts are made via CLI. However, it is not very optimized at the moment and needs more work.

TurtleP commented 11 months ago

Resolved by release update on commit b4dd2db. Rendering a lot of text is still very slow and being looked into for optimizing the rendering.