No description
Find a file
James R b8a41fa509 Fix negative reference counting in P_RestoreTMStruct
This fixes some thinkers never being removed due to having
negative reference counts.

And here's a breakdown of why the old code could produce
negative reference counts:

Consider P_CheckPosition. This function calls P_SetTarget
on tm.thing but does not call P_RestoreTMStruct. This
means that tm.thing will not be NULL the next P_SetTarget
is called on it. What are the implications of this?
Consider the following series of events:

- P_CheckPosition is called, tm.thing != NULL afterward
- Another function saves the tm struct and sets tm.thing to a different mobj
- - the old tm.thing will have its references decremented
- - the new tm.thing will have its references incremented
- This function calls P_RestoreTMStruct

What should happen when P_RestoreTMStruct is called? The
*new* tm.thing should have its references *decremented*
and the *old* tm.thing should its references
*incremented*, of course, for symmetry with P_SetTarget.

The old code correctly decremented new tm.thing's
references but did not increment old tm.thing's
references.
2023-02-14 04:17:04 -08:00
.circleci Let stop building a NONET build of Kart 2022-09-24 15:56:42 +00:00
android
assets cmake: Remove asset hashing, CMAKE_ASSETS_DIR 2022-11-27 02:44:10 -08:00
cmake Separate git commit subject line from comprevision, add SRB2_COMP_NOTE 2023-01-05 18:32:20 -08:00
debian-template
deployer
doc
extras Delete map configs 2023-01-01 18:11:22 -05:00
libs Remove unnecessary ACSVM files from libs 2022-12-27 08:32:13 -05:00
src Fix negative reference counting in P_RestoreTMStruct 2023-02-14 04:17:04 -08:00
thirdparty cmake: move ACSVM fetch to cpm-acsvm.cmake 2023-01-26 23:33:00 -08:00
tools
.clang-format cxx: clang-format adjustments 2023-01-09 20:02:19 -06:00
.editorconfig Add srb2::io streams abstraction 2022-12-30 21:15:44 -06:00
.gitattributes
.gitignore .gitignore: add CMakeUserPresets.json 2022-12-17 21:23:07 -08:00
.travis.yml
alias-bootstrap.sh Add alias-bootstrap.sh 2023-01-06 22:16:55 -08:00
Android.mk
appveyor.yml
CMakeLists.txt cmake: Remove SDL2_mixer and OpenMPT 2023-01-04 16:51:12 -06:00
CMakePresets.json Add CMakePresets.json 2023-01-06 21:52:26 -08:00
comptime.bat
comptime.mk
comptime.props
comptime.sh
cpdebug.mk
debian_template.sh
Doxyfile
LICENSE
README.md
srb2-vc9.sln
srb2-vc10.sln
SRB2.cbp
Srb2.dev
srb2.png
SRB2_common.props
SRB2_Debug.props
SRB2_Release.props
srb2banner.png

SRB2Kart

SRB2Kart is a kart racing mod based on the 3D Sonic the Hedgehog fangame Sonic Robo Blast 2, based on a modified version of Doom Legacy.

Dependencies

  • NASM (x86 builds only)
  • SDL2 (Linux/OS X only)
  • SDL2-Mixer (Linux/OS X only)
  • libupnp (Linux/OS X only)
  • libgme (Linux/OS X only)
  • libopenmpt (Linux/OS X only)

Compiling

See SRB2 Wiki/Source code compiling. The compiling process for SRB2Kart is largely identical to SRB2.

Disclaimer

Kart Krew is in no way affiliated with SEGA or Sonic Team. We do not claim ownership of any of SEGA's intellectual property used in SRB2.