PolyMarsDev / Cursor-Custodian

A small SDL2 game made in 48 hours
116 stars 34 forks source link

Fix issue with Distance text accessing invalid memory #5

Open netpoetica opened 3 years ago

netpoetica commented 3 years ago

@PolyMarsDev this fixes the issue you describe in your video (which I was able to recreate on my local). It wasn't actually any issue with SDL_TTF lib, but with the fact that you were returning a ptr to your local variable which was allocated on the stack and not on the heap. Of course it was very strange that high score worked fine but distance didn't, but such is the way with memory in C/C++.

I also removed some stuff that triggered compiler warnings! Thanks for putting this example together :) I agree with people that the controls are borderline impossible (jumping while still pushing with your cursor without killing your guy is rough), but I still would like to see you finish this game someday! Cheers and thanks for the video!

Fix score functions returning local variables that become inaccessible Remove unused variables triggering compiler warnings Add .gitignore to keep emscripten-generated files out Add emscripten compile to Makefile

netpoetica commented 3 years ago

Oh and FWIW, this is just speculation, but I suspect the reason this issue only became pronounced in the browser is because of the way Emscripten uses heap/stack memory in the WASM world. I suspect in C++ executable land, this memory doesn't get garbage collected and you just had a memory leak, whereas in WASM, this unreferenced memory was getting garbage collected and pointers were becoming nullptr.

mandar1jn commented 3 years ago

Thanks? This also fixes issues on ARM processors