1
0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-06-28 07:28:30 +02:00
VVVVVV/desktop_version/src
Misa 2a80c80f6c Fix undefined behavior when removing activity zones
It turns out the game engaged in pseudo-UB when removing activity zones,
which got turned into actual UB due to the previous commit.

There were three places where this could happen:
 - Pressing ENTER on an activity zone in normal gameplay
 - Pressing ENTER on an activity zone in in-editor playtesting (because
   the code is duped here)
 - Pressing ESC and quitting to menu while standing inside an activity
   zone

In all cases, game.activeactivity would still be pointing to a
non-existent activity zone. This activity zone in the previous system
would simply be a block with a false 'active', and in the system where
C++ vectors are used properly, would index past the blocks array.

In fact, it is a bug that when you press ENTER on an activity zone, the
activity zone prompt suddenly turns to black, then immediately
disappears. It was pointing to a block that had its clear() method
called, which is why it was all black, and it was an inactive block!
This commit makes it so pressing ENTER on an activity zone smoothly
fades out the activity zone prompt instead of being sudden black.
2020-04-03 23:28:47 -04:00
..
BinaryBlob.cpp Fix warnings raised by GCC 8 2020-01-11 08:53:32 -05:00
BinaryBlob.h Hello WWWWWWorld! 2020-01-08 10:37:50 -05:00
BlockV.cpp Refactor blocks to not use the 'active' system 2020-04-03 23:28:47 -04:00
BlockV.h Refactor blocks to not use the 'active' system 2020-04-03 23:28:47 -04:00
editor.cpp Remove duplicate function musicclass::stopmusic() 2020-04-03 19:19:45 -04:00
editor.h Remove semi-useless function editorclass::weirdloadthing() 2020-04-03 10:40:50 -04:00
Ent.cpp Remove entclass::clear(), simplify entclass initializations 2020-04-03 23:28:47 -04:00
Ent.h Remove entclass::clear(), simplify entclass initializations 2020-04-03 23:28:47 -04:00
Entity.cpp Refactor blocks to not use the 'active' system 2020-04-03 23:28:47 -04:00
Entity.h Refactor blocks to not use the 'active' system 2020-04-03 23:28:47 -04:00
Enums.h Hello WWWWWWorld! 2020-01-08 10:37:50 -05:00
FileSystemUtils.cpp Add -basedir option to specify base user directory (#154) 2020-02-08 18:49:03 -05:00
FileSystemUtils.h Add -basedir option to specify base user directory (#154) 2020-02-08 18:49:03 -05:00
Finalclass.cpp Change all UtilityClass::something to help.something 2020-04-03 10:40:50 -04:00
Finalclass.h Remove global args from main game loadlevel() functions 2020-04-03 10:40:50 -04:00
Game.cpp Refactor entities and linecrosskludge to not use the 'active' system 2020-04-03 23:28:47 -04:00
Game.h Remove remnants of screen recording stuff 2020-04-03 10:40:50 -04:00
GOGNetwork.c Add support for multiple Network backends, stub in GOGNetwork 2020-01-13 11:15:22 -05:00
Graphics.cpp Refactor entities and linecrosskludge to not use the 'active' system 2020-04-03 23:28:47 -04:00
Graphics.h Move tempstring off of Graphics, Game, and UtilityClass 2020-04-03 10:40:50 -04:00
GraphicsResources.cpp Allow using help/graphics/music/game/key/map/obj everywhere 2020-01-29 07:58:23 -05:00
GraphicsResources.h Allow using help/graphics/music/game/key/map/obj everywhere 2020-01-29 07:58:23 -05:00
GraphicsUtil.cpp Fix mixed indentation in GraphicsUtil.cpp 2020-04-03 10:40:50 -04:00
GraphicsUtil.h Hello WWWWWWorld! 2020-01-08 10:37:50 -05:00
Input.cpp Fix undefined behavior when removing activity zones 2020-04-03 23:28:47 -04:00
Input.h Remove global args from Input.cpp 2020-04-03 10:40:50 -04:00
KeyPoll.cpp Make the toggle fullscreen conditional more readable 2020-03-12 21:20:25 -04:00
KeyPoll.h Allow using help/graphics/music/game/key/map/obj everywhere 2020-01-29 07:58:23 -05:00
Labclass.cpp Remove game.test and game.teststring 2020-04-03 10:40:50 -04:00
Labclass.h Remove global args from main game loadlevel() functions 2020-04-03 10:40:50 -04:00
Logic.cpp Remove entityclass::cleanup() 2020-04-03 23:28:47 -04:00
Logic.h Remove global args from Logic.cpp 2020-04-03 10:40:50 -04:00
main.cpp Remove remnants of screen recording stuff 2020-04-03 10:40:50 -04:00
MakeAndPlay.h Re-comment out #define MAKEANDPLAY 2020-02-09 10:42:03 -05:00
Map.cpp Remove entityclass::cleanup() 2020-04-03 23:28:47 -04:00
Map.h Fix mixed indentation in Map.h and Map.cpp 2020-04-03 10:40:50 -04:00
Maths.h Hello WWWWWWorld! 2020-01-08 10:37:50 -05:00
Music.cpp Remove duplicate function musicclass::stopmusic() 2020-04-03 19:19:45 -04:00
Music.h Remove duplicate function musicclass::stopmusic() 2020-04-03 19:19:45 -04:00
Network.c int32_t > int 2020-01-13 11:27:16 -05:00
Network.h Add support for multiple Network backends, stub in GOGNetwork 2020-01-13 11:15:22 -05:00
Otherlevel.cpp Remove global args from main game loadlevel() functions 2020-04-03 10:40:50 -04:00
Otherlevel.h Remove global args from main game loadlevel() functions 2020-04-03 10:40:50 -04:00
preloader.cpp Remove outdated comments from preloader.cpp 2020-04-03 10:40:50 -04:00
preloader.h Remove global args from preloader.cpp 2020-04-03 10:40:50 -04:00
Screen.cpp Remove unused variable Screen::glScreen 2020-04-03 10:40:50 -04:00
Screen.h Remove unused variable Screen::glScreen 2020-04-03 10:40:50 -04:00
Script.cpp Refactor entities and linecrosskludge to not use the 'active' system 2020-04-03 23:28:47 -04:00
Script.h Fix mixed indentation in Script.cpp and Script.h 2020-04-03 10:40:50 -04:00
Scripts.cpp Fix mixed indentation in Scripts.cpp 2020-04-03 10:40:50 -04:00
SoundSystem.cpp add myself to the contributors file, fix formatting 2020-01-10 15:07:29 -07:00
SoundSystem.h Hello WWWWWWorld! 2020-01-08 10:37:50 -05:00
Spacestation2.cpp Change all UtilityClass::something to help.something 2020-04-03 10:40:50 -04:00
Spacestation2.h Remove global args from main game loadlevel() functions 2020-04-03 10:40:50 -04:00
SteamNetwork.c Untested Haiku port? 2020-01-13 23:31:14 -05:00
TerminalScripts.cpp Remove usages of second argument of playef() script command 2020-04-03 10:40:50 -04:00
Textbox.cpp Add support for Unicode rendering (#47) 2020-01-31 13:25:37 -05:00
Textbox.h Hello WWWWWWorld! 2020-01-08 10:37:50 -05:00
titlerender.cpp Refactor entities and linecrosskludge to not use the 'active' system 2020-04-03 23:28:47 -04:00
titlerender.h Remove global 'temp' variable from titlerender.cpp 2020-04-03 10:40:50 -04:00
Tower.cpp Initialize level data with 0s in M&P 2020-02-08 23:54:20 -05:00
Tower.h Hello WWWWWWorld! 2020-01-08 10:37:50 -05:00
UtilityClass.cpp Move tempstring off of Graphics, Game, and UtilityClass 2020-04-03 10:40:50 -04:00
UtilityClass.h Move tempstring off of Graphics, Game, and UtilityClass 2020-04-03 10:40:50 -04:00
WarpClass.cpp Refactor entities and linecrosskludge to not use the 'active' system 2020-04-03 23:28:47 -04:00
WarpClass.h Remove global args from main game loadlevel() functions 2020-04-03 10:40:50 -04:00