{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":7305085,"defaultBranch":"master","name":"omnispeak","ownerLogin":"sulix","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2012-12-24T09:41:50.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/2116479?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1706605737.0","currentOid":""},"activityList":{"items":[{"before":"33a0c6a0d8fa081b957945ef6285f778d1b518aa","after":"3ab007232de0dbbce43cafb6315e9ba934592fe9","ref":"refs/heads/master","pushedAt":"2024-04-05T08:15:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"dumpprinter: Run on big-endian systems\n\nThe existing code seems to work okay. Given all the dumps pass on my\nNetBSD aarch64eb system, it should be okay.\n\nSigned-off-by: David Gow ","shortMessageHtmlLink":"dumpprinter: Run on big-endian systems"}},{"before":"0c8de900f5cfb6567022826cfc4e3ac63c9005ef","after":"507c530fbc39e9ae86d58390bdeaf306caf1a16a","ref":"refs/heads/setupsdl-w32","pushedAt":"2024-03-23T08:30:26.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"CI: Use 'setup-sdl' for Windows builders\n\nThis will be required one day, when SDL stops publishing pre-built\nwindows SDKs. It also means we can auto-update the SDL version.\n\nThis does remove the mingw32 builds, but we're doing cross-compiled\nmingw builds from Linux, so it's not a big deal.","shortMessageHtmlLink":"CI: Use 'setup-sdl' for Windows builders"}},{"before":"eaabae10502e0568098538762ba6c833d405f4ae","after":"5d516f0e0fe223a75de4aec2267611bc542d5745","ref":"refs/heads/sdl3","pushedAt":"2024-03-18T09:32:09.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"[Incomplete] Initial SDL3 support\n\nAdd VL, SD, and IN backends for SDL3. We do this instead of using the\ncombined SDL1/2 backends for SD and IN, as so many functions have been\nrenamed. This does present some problems, as otherwise they share a lot\nof code, so one will likely end up outdated.\n\nIdeally, some of the 'generic' code, particularly in id_sd, can be split\nout a bit.\n\nOtherwise, this is still incomplete:\n- Some code, particularly in id_sd, is dead.\n- Graphics is probably broken on big-endian. (Though even SDL2 seemed\n broken on NetBSD/arm64eb, though that's weird enough I can't guarantee\n it'd work anyway.)\n- The pkg-config bits in the makefile are a bit ugly.\n- We'll possibly want support for vendored SDL3 at some point, too.\n- One day we'll want an SDL3_gpu based VL backend, but the renderer is\n good for now.\n\nOne notable change is that all includes of \"SDL.h\" need to be replaced\nwith an include of \"ck_cross.h\", which has the correct logic to include\n\"SDL3/SDL.h\" where needed. WITH_SDL is now set to 3 for SDL3 builds.","shortMessageHtmlLink":"[Incomplete] Initial SDL3 support"}},{"before":"7873ad6aece04353809afdacbb08dac7f0622624","after":"33a0c6a0d8fa081b957945ef6285f778d1b518aa","ref":"refs/heads/master","pushedAt":"2024-03-08T10:06:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"id_ca: Fix OOB memory read in CA_RLEWCompress()\n\nCA_RLEWCompress() checked the next word to compress before checking that\nthere were more words _to_ compress, reading 2 bytes beyond the end of\nits buffer.\n\nAlso assert that the length of data to compress is divisible by two.","shortMessageHtmlLink":"id_ca: Fix OOB memory read in CA_RLEWCompress()"}},{"before":"541882770ee3ad8ada6ce7a5d5f470ebcfe7a2de","after":"7873ad6aece04353809afdacbb08dac7f0622624","ref":"refs/heads/master","pushedAt":"2024-03-08T09:13:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"id_us_1: Fix MSVC warnings\n\nThere were a few of these, mostly string functions (replaces with 'safer' variants, or printfs), and potentially lossy type conversions (mostly fixed by using size_t instead of uint16_t in a few places).\n\nThe biggest change is with USL_XORICursor, which now accepts a size_t for the cursor position, not a uint16_t.","shortMessageHtmlLink":"id_us_1: Fix MSVC warnings"}},{"before":"d18ce33f6d38742d1de7da5ecc3edb78faebaf63","after":"541882770ee3ad8ada6ce7a5d5f470ebcfe7a2de","ref":"refs/heads/master","pushedAt":"2024-03-07T14:45:11.000Z","pushType":"push","commitsCount":7,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"id_us_2: ck_us_2: Fix a whole bunch of warnings\n\nMSVC gave a huge number of warnings of these files. This commit fixes almost all of them.\n\nIt mostly consists of reworking string manipulation, but there's a few other bits an pieces.\n\nThe remaining warnings are for getenv() and localtime(). The use of getenv() in particular is somthing I should look into. The original game does this, buy why?","shortMessageHtmlLink":"id_us_2: ck_us_2: Fix a whole bunch of warnings"}},{"before":"29a739064192d75125a16428f5c2c0b21d0f11df","after":"d18ce33f6d38742d1de7da5ecc3edb78faebaf63","ref":"refs/heads/master","pushedAt":"2024-02-25T13:10:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"CMake: Build windows resources\n\nOn windows, we want to include the windowsres.rc file in order to get version info, the icon, etc. We were doing this with the makefile, but not with CMake. Hopefully it'll work fine now.","shortMessageHtmlLink":"CMake: Build windows resources"}},{"before":"e5415ab9a070523ff455a1167a083a52de1a9bd3","after":"29a739064192d75125a16428f5c2c0b21d0f11df","ref":"refs/heads/master","pushedAt":"2024-02-25T09:56:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"id_mm: Simplify MM_ArenaStrDup()\n\nMSVC complains a lot about strcpy, and wants us to use strcpy_s instead:\nwarning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead.\n\nBut, we actually already know the length of the buffer perfectly matches the length of the string (since we allocated it), so we can just use memcpy() and avoid both needing to check for '\\0', and needing to add a new null terminator at the end.\n\nAnd the warning goes away, too (though there are lots of others.)","shortMessageHtmlLink":"id_mm: Simplify MM_ArenaStrDup()"}},{"before":"697eb796e491303e7aec5c24f8c5b57050228e11","after":"e5415ab9a070523ff455a1167a083a52de1a9bd3","ref":"refs/heads/master","pushedAt":"2024-02-25T07:17:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"CMake: Fix OMNIPATH default to ${USERPATH}\n\nWe were defaulting to the literal string 'USERPATH', which wasn't a great idea.","shortMessageHtmlLink":"CMake: Fix OMNIPATH default to ${USERPATH}"}},{"before":"6c818113ac9930f562f5609e9858d2633c396bf3","after":"697eb796e491303e7aec5c24f8c5b57050228e11","ref":"refs/heads/master","pushedAt":"2024-02-25T07:02:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"ti: Don't use __PRETTY_FUNCTION__ for warnings\n\nIt's not supported on MSVC, which we didn't notice, as we weren't building DEBUG builds on Windows by default.\n\nIt doesn't really matter, anyway, so this is fine!","shortMessageHtmlLink":"ti: Don't use __PRETTY_FUNCTION__ for warnings"}},{"before":"b9e215b9372ab9fe4c86673942c66521c8013cc6","after":"6c818113ac9930f562f5609e9858d2633c396bf3","ref":"refs/heads/master","pushedAt":"2024-02-25T06:22:15.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"Add a bunch of debug log messages.\n\nThese not only give a \"Doom startup log\" style aesthetic to everything,\nbut also could be useful in debugging things. It also should look cool\nif enabled on the 3DS builds, where the second screen has log messages.\n\nThey're not enabled for release builds by default, so shouldn't be a\nproblem, but can be disabled by settings \"logLevel = warn\" in the\nOMNISPK.CFG file.\n\nThe weirdest message is that, when caching things, the loading string is\nprinted (\"Keen enters\\nthe Shadowlands\", etc).\n\nNote that FS_ and MM_ startup messages are printed _before_ the config\nfile is loaded, which can prevent them from being disabled/enabled with\nthe config option.","shortMessageHtmlLink":"Add a bunch of debug log messages."}},{"before":"4fecb2bdc88e3d25227f3223e93d4428be07b531","after":"0c8de900f5cfb6567022826cfc4e3ac63c9005ef","ref":"refs/heads/setupsdl-w32","pushedAt":"2024-01-30T09:19:52.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"CI: Use 'setup-sdl' for Windows builders\n\nThis will be required one day, when SDL stops publishing pre-built\nwindows SDKs. It also means we can auto-update the SDL version.\n\nThis does remove the mingw32 builds, but we're doing cross-compiled\nmingw builds from Linux, so it's not a big deal.","shortMessageHtmlLink":"CI: Use 'setup-sdl' for Windows builders"}},{"before":"71da3d977edfe9f19770d25e1a9b52500f8ee96b","after":"4fecb2bdc88e3d25227f3223e93d4428be07b531","ref":"refs/heads/setupsdl-w32","pushedAt":"2024-01-30T09:10:53.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"CI: Use 'setup-sdl' for Windows builders\n\nThis will be required one day, when SDL stops publishing pre-built\nwindows SDKs. It also means we can auto-update the SDL version.\n\nThis does remove the mingw32 builds, but we're doing cross-compiled\nmingw builds from Linux, so it's not a big deal.","shortMessageHtmlLink":"CI: Use 'setup-sdl' for Windows builders"}},{"before":null,"after":"71da3d977edfe9f19770d25e1a9b52500f8ee96b","ref":"refs/heads/setupsdl-w32","pushedAt":"2024-01-30T09:08:57.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"CI: Use 'setup-sdl' for Windows builders\n\nThis will be required one day, when SDL stops publishing pre-built\nwindows SDKs. It also means we can auto-update the SDL version.\n\nThis does remove the mingw32 builds, but we're doing cross-compiled\nmingw builds from Linux, so it's not a big deal.","shortMessageHtmlLink":"CI: Use 'setup-sdl' for Windows builders"}},{"before":"230e4e46758e8ad565acd1ce52a129068aa3b0ef","after":"b9e215b9372ab9fe4c86673942c66521c8013cc6","ref":"refs/heads/master","pushedAt":"2024-01-23T13:37:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"CI: Attempt a big-endian cross-compile build (ppc64)\n\nNote that this doesn't test the generated binary: it's just there to\nmake sure it builds.","shortMessageHtmlLink":"CI: Attempt a big-endian cross-compile build (ppc64)"}},{"before":"817fa88c2d4351af4e2db9285563a7f66fa8c080","after":"e529b1a498516a298b8f5e3b375011654cad6c63","ref":"refs/heads/crosstest2","pushedAt":"2024-01-23T13:35:53.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"CI: Attempt a big-endian cross-compile build (ppc64)\n\nNote that this doesn't test the generated binary: it's just there to\nmake sure it builds.","shortMessageHtmlLink":"CI: Attempt a big-endian cross-compile build (ppc64)"}},{"before":"240944c9b2b1bfe307b989c4d59d96a9d877e7c9","after":"817fa88c2d4351af4e2db9285563a7f66fa8c080","ref":"refs/heads/crosstest2","pushedAt":"2024-01-23T13:34:51.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"CI: Attempt a big-endian cross-compile build (ppc64)\n\nNote that this doesn't test the generated binary: it's just there to\nmake sure it builds.","shortMessageHtmlLink":"CI: Attempt a big-endian cross-compile build (ppc64)"}},{"before":null,"after":"240944c9b2b1bfe307b989c4d59d96a9d877e7c9","ref":"refs/heads/crosstest2","pushedAt":"2024-01-23T13:33:31.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"CI: Attempt a big-endian cross-compile build (ppc64)\n\nNote that this doesn't test the generated binary: it's just there to\nmake sure it builds.","shortMessageHtmlLink":"CI: Attempt a big-endian cross-compile build (ppc64)"}},{"before":"018e938a896c4a16c075626892d70953cdfbcaf0","after":"230e4e46758e8ad565acd1ce52a129068aa3b0ef","ref":"refs/heads/master","pushedAt":"2024-01-22T15:23:23.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"Merge pull request #59 from Ryzee119/id_ca_fix\n\nid_ca: Fix build in big endian systems","shortMessageHtmlLink":"Merge pull request #59 from Ryzee119/id_ca_fix"}},{"before":"eab0f3b4648b07f35a1f05be939fc59ea0908731","after":"018e938a896c4a16c075626892d70953cdfbcaf0","ref":"refs/heads/master","pushedAt":"2024-01-07T09:09:15.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"ck_keen: Add 70Hz ledge grabbing fix.\n\nThis comes from K1n9_Duk3 in the following PCKF thread:\nhttps://pckf.com/viewtopic.php?p=108855#p108855\n\nFrom that thread:\nKeen can only grab edges reliably if the hiteast / hitwest values are\nset correctly, which requires the object to move by at least 1 unit\nalong the x axis. CK_PhysAccelHorz only accelerates every other tic and\nhitting a wall while jumping always sets xVel to 0, which means it\nwould take at least 2 tics to make the object move and set hiteast and\nhitwest to the correct values after hitting a wall. The original Keen\ngames only ran at up to 35 fps (2 tics per frame), so the ck_nextX value\nwould almost never be 0 here. This fix makes sure that Keen always\nmoves by at least 1 unit while jumping and holding down the left or\nright key, so that Keen can grab edges reliably.","shortMessageHtmlLink":"ck_keen: Add 70Hz ledge grabbing fix."}},{"before":"36f3e476be52daaed0d1cbe629b11b57075733c7","after":"eab0f3b4648b07f35a1f05be939fc59ea0908731","ref":"refs/heads/master","pushedAt":"2023-11-20T12:51:59.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"Merge pull request #58 from russhwolf/russhwolf-patch-1\n\nTrigger new life when score is equal to threshold, as well as greater.","shortMessageHtmlLink":"Merge pull request #58 from russhwolf/russhwolf-patch-1"}},{"before":"3d0788012da394ec2f5c6162c670f4d80b0a45f3","after":"36f3e476be52daaed0d1cbe629b11b57075733c7","ref":"refs/heads/master","pushedAt":"2023-10-29T05:22:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"sd_sdl: Support filling more than 512 samples at a time.\n\nThis allows us to increase the latency, hopefully enough to make windows\nsystems more happy. (This patch doesn't actually change the latency, but\n\"sd_sdl_queueAudioMinBufSize\" now will work if > 512.","shortMessageHtmlLink":"sd_sdl: Support filling more than 512 samples at a time."}},{"before":"efbe307ef933082fd190bee235aa8bea9a5f5080","after":"3d0788012da394ec2f5c6162c670f4d80b0a45f3","ref":"refs/heads/master","pushedAt":"2023-10-17T14:15:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"id_vl_sdl2gl: Quit if surface allocation fails\n\n-fanalyzer complains that the allocation can fail, which is fair. We're\nnot handling that, so Quit. Quit() is marked noreturn, so gcc is happy.\n\nWarning:\nid_vl_sdl2gl.c: In function 'VL_SDL2GL_CreateSurface':\nid_vl_sdl2gl.c:319:17: warning: dereference of possibly-NULL 'surf' [CWE-690] [-Wanalyzer-possible-null-dereference]\n 319 | surf->w = w;\n | ~~~~~~~~^~~\n 'VL_SDL2GL_CreateSurface': events 1-2\n |\n | 318 | VL_SDL2GL_Surface *surf = (VL_SDL2GL_Surface *)malloc(sizeof(VL_SDL2GL_Surface));\n | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | |\n | | (1) this call could return NULL\n | 319 | surf->w = w;\n | | ~~~~~~~~~~~\n | | |\n | | (2) 'surf' could be NULL: unchecked value from (1)\n |","shortMessageHtmlLink":"id_vl_sdl2gl: Quit if surface allocation fails"}},{"before":"ccec3dc3becc43267fc345340524a595774d3c3c","after":"efbe307ef933082fd190bee235aa8bea9a5f5080","ref":"refs/heads/master","pushedAt":"2023-10-16T06:37:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"ck_us_2: Rework USL_PlayPaddleWar() to initialise ball_visible\n\nRework some of the variable declarations at the start of\nUSL_PlayPaddleWar() to initialise them earlier, use bool instead of\nint16_t where appropriate, and avoid a gcc -fanalyze warning for\nball_visible being read uninitialized.\n\nAs usual, the warning was:\n\nIn file included from id_us_2.c:49:\nck_us_2.c: In function 'USL_PlayPaddleWar':\nck_us_2.c:1218:20: warning: use of uninitialized value 'ball_visible' [CWE-457] [-Wanalyzer-use-of-uninitialized-value]\n 1218 | if (ball_visible)\n | ^\n 'CK_PaddleWar.part.0': events 1-2\n |\n | 1250 | bool CK_PaddleWar(US_CardMsg msg, US_CardItem *item)\n | | ^~~~~~~~~~~~\n | | |\n | | (1) entry to 'CK_PaddleWar.part.0'\n |......\n | 1268 | USL_PlayPaddleWar();\n | | ~~~~~~~~~~~~~~~~~~~\n | | |\n | | (2) calling 'USL_PlayPaddleWar' from 'CK_PaddleWar.part.0'\n |\n +--> 'USL_PlayPaddleWar': events 3-6\n |\n | 1030 | void USL_PlayPaddleWar(void)\n | | ^~~~~~~~~~~~~~~~~\n | | |\n | | (3) entry to 'USL_PlayPaddleWar'\n | 1031 | {\n | 1032 | int16_t ball_visible, new_round, y_bounce, done, keen_won_last, comp_move_counter;\n | | ~~~~~~~~~~~~\n | | |\n | | (4) region created on stack here\n | | (5) capacity: 2 bytes\n |......\n | 1218 | if (ball_visible)\n | | ~\n | | |\n | | (6) use of uninitialized value 'ball_visible' here\n |","shortMessageHtmlLink":"ck_us_2: Rework USL_PlayPaddleWar() to initialise ball_visible"}},{"before":"63045e9d304249c857bbffe902cdcd133b050e65","after":"ccec3dc3becc43267fc345340524a595774d3c3c","ref":"refs/heads/master","pushedAt":"2023-10-16T06:11:27.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"id_ca: Avoid analyzer warnings in CA_LoadAllSounds()\n\nRework CA_LoadAllSounds() to handle the case when SoundMode/oldsoundmode\nare not valid. The resulting code is a bit nicer, IMO, too.\n\nOriginal warnings:\nid_ca.c: In function 'CA_LoadAllSounds':\nid_ca.c:1226:37: warning: use of uninitialized value 'offset' [CWE-457] [-Wanalyzer-use-of-uninitialized-value]\n 1226 | if (CA_audio[offset])\n | ~~~~~~~~^~~~~~~~\n 'CA_LoadAllSounds': events 1-5\n |\n | 1208 | int16_t offset; // FIXME: What about a mode differing from 1 or 2?\n | | ^~~~~~\n | | |\n | | (1) region created on stack here\n | | (2) capacity: 2 bytes\n | 1209 | uint16_t loopvar;\n | 1210 | if (oldsoundmode != sdm_Off)\n | | ~\n | | |\n | | (3) following 'true' branch...\n | 1211 | {\n | 1212 | switch (oldsoundmode)\n | | ~~~~~~\n | | |\n | | (4) ...to here\n | | (5) following 'default:' branch...\n |\n 'CA_LoadAllSounds': event 6\n |\n |cc1:\n | (6): ...to here\n |\n 'CA_LoadAllSounds': events 7-9\n |\n | 1224 | for (loopvar = 0; loopvar < ca_audInfoE.numSounds; loopvar++, offset++)\n | | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~\n | | |\n | | (7) following 'true' branch...\n | 1225 | {\n | 1226 | if (CA_audio[offset])\n | | ~~~~~~~~~~~~~~~~\n | | |\n | | (8) ...to here\n | | (9) use of uninitialized value 'offset' here\n |\nid_ca.c:1248:25: warning: use of uninitialized value 'offset' [CWE-457] [-Wanalyzer-use-of-uninitialized-value]\n 1248 | CA_CacheAudioChunk(offset);\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~\n 'CA_LoadAllSounds': events 1-5\n |\n | 1208 | int16_t offset; // FIXME: What about a mode differing from 1 or 2?\n | | ^~~~~~\n | | |\n | | (1) region created on stack here\n | | (2) capacity: 2 bytes\n |......\n | 1232 | if (SD_GetSoundMode() != sdm_Off)\n | | ~\n | | |\n | | (3) following 'true' branch...\n | 1233 | {\n | 1234 | switch (SD_GetSoundMode())\n | | ~~~~~~ ~~~~~~~~~~~~~~~~~\n | | | |\n | | | (4) ...to here\n | | (5) following 'default:' branch...\n |\n 'CA_LoadAllSounds': event 6\n |\n |cc1:\n | (6): ...to here\n |\n 'CA_LoadAllSounds': events 7-9\n |\n | 1246 | for (loopvar = 0; loopvar < ca_audInfoE.numSounds; loopvar++, offset++)\n | | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~\n | | |\n | | (7) following 'true' branch...\n | 1247 | {\n | 1248 | CA_CacheAudioChunk(offset);\n | | ~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | |\n | | (8) ...to here\n | | (9) use of uninitialized value 'offset' here\n |","shortMessageHtmlLink":"id_ca: Avoid analyzer warnings in CA_LoadAllSounds()"}},{"before":"ee9fe55e0edad902060580599454eda521db30e4","after":"63045e9d304249c857bbffe902cdcd133b050e65","ref":"refs/heads/master","pushedAt":"2023-10-16T05:53:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"id_us_1: Initialise the sd/sm mode passed to SD_Default()\n\nWhile SD_Default() takes an argument to see if the sound/music modes\nare initialised, gcc's -fanalyze option doesn't pick up on that across\ndifferent files (understandably), so let's just initialise them here.\n\nThe warnings were:\nid_us_1.c: in function ‘US_LoadConfig’:\nid_us_1.c:751:9: warning: use of uninitialized value ‘sd’ [CWE-457] [-Wanalyzer-use-of-uninitialized-value]\n 751 | SD_Default(configFileLoaded && (hadAdlib == SD_IsAdlibPresent()), sd, sm);\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n ‘US_LoadConfig’: events 1-3\n |\n | 669 | SD_SoundMode sd;\n | | ^~\n | | |\n | | (1) region created on stack here\n | | (2) capacity: 4 bytes\n |......\n | 689 | if (FS_IsFileValid(f))\n | | ~\n | | |\n | | (3) following ‘true’ branch...\n |\n ‘US_LoadConfig’: event 4\n |\n |cc1:\n | (4): ...to here\n |\n ‘US_LoadConfig’: events 5-13\n |\n | 693 | for (int i = 0; i < 8; i++)\n | | ~~^~~\n | | |\n | | (5) following ‘true’ branch (when ‘i != 8’)...\n | 694 | {\n | 695 | FS_ReadInt8LE(ck_highScores[i].name, sizeof(ck_highScores[i].name), f);\n | | ~~~~~~~~~~~~~~~~~~~~~\n | | |\n | | (6) ...to here\n |......\n | 700 | if (FS_ReadInt16LE(&intVal, 1, f))\n | | ~\n | | |\n | | (7) following ‘false’ branch...\n | 701 | sd = (SD_SoundMode)intVal;\n | 702 | if (FS_ReadInt16LE(&intVal, 1, f))\n | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | ||\n | | |(8) ...to here\n | | (9) following ‘false’ branch...\n |......\n | 705 | FS_ReadInt16LE(&inputDevice, 1, f);\n | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | |\n | | (10) ...to here\n |......\n | 751 | SD_Default(configFileLoaded && (hadAdlib == SD_IsAdlibPresent()), sd, sm);\n | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | | | |\n | | | | (12) ...to here\n | | | (11) following ‘true’ branch (when ‘configFileLoaded != 0’)...\n | | (13) use of uninitialized value ‘sd’ here\n |\nid_us_1.c:751:9: warning: use of uninitialized value ‘sm’ [CWE-457] [-Wanalyzer-use-of-uninitialized-value]\n 751 | SD_Default(configFileLoaded && (hadAdlib == SD_IsAdlibPresent()), sd, sm);\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n ‘US_LoadConfig’: events 1-3\n |\n | 670 | ID_MusicMode sm;\n | | ^~\n | | |\n | | (1) region created on stack here\n | | (2) capacity: 4 bytes\n |......\n | 689 | if (FS_IsFileValid(f))\n | | ~\n | | |\n | | (3) following ‘true’ branch...\n |\n ‘US_LoadConfig’: event 4\n |\n |cc1:\n | (4): ...to here\n |\n ‘US_LoadConfig’: events 5-13\n |\n | 693 | for (int i = 0; i < 8; i++)\n | | ~~^~~\n | | |\n | | (5) following ‘true’ branch (when ‘i != 8’)...\n | 694 | {\n | 695 | FS_ReadInt8LE(ck_highScores[i].name, sizeof(ck_highScores[i].name), f);\n | | ~~~~~~~~~~~~~~~~~~~~~\n | | |\n | | (6) ...to here\n |......\n | 700 | if (FS_ReadInt16LE(&intVal, 1, f))\n | | ~\n | | |\n | | (7) following ‘false’ branch...\n | 701 | sd = (SD_SoundMode)intVal;\n | 702 | if (FS_ReadInt16LE(&intVal, 1, f))\n | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | ||\n | | |(8) ...to here\n | | (9) following ‘false’ branch...\n |......\n | 705 | FS_ReadInt16LE(&inputDevice, 1, f);\n | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | |\n | | (10) ...to here\n |......\n | 751 | SD_Default(configFileLoaded && (hadAdlib == SD_IsAdlibPresent()), sd, sm);\n | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | | | |\n | | | | (12) ...to here\n | | | (11) following ‘true’ branch (when ‘configFileLoaded != 0’)...\n | | (13) use of uninitialized value ‘sm’ here\n |\nid_us_1.c:751:9: warning: use of uninitialized value ‘sd’ [CWE-457] [-Wanalyzer-use-of-uninitialized-value]\n 751 | SD_Default(configFileLoaded && (hadAdlib == SD_IsAdlibPresent()), sd, sm);\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n ‘US_Startup’: events 1-2\n |\n | 883 | void US_Startup(void)\n | | ^~~~~~~~~~\n | | |\n | | (1) entry to ‘US_Startup’\n |......\n | 889 | US_LoadConfig();\n | | ~~~~~~~~~~~~~~~\n | | |\n | | (2) calling ‘US_LoadConfig’ from ‘US_Startup’\n |\n +--> ‘US_LoadConfig’: events 3-6\n |\n | 666 | void US_LoadConfig(void)\n | | ^~~~~~~~~~~~~\n | | |\n | | (3) entry to ‘US_LoadConfig’\n |......\n | 669 | SD_SoundMode sd;\n | | ~~\n | | |\n | | (4) region created on stack here\n | | (5) capacity: 4 bytes\n |......\n | 689 | if (FS_IsFileValid(f))\n | | ~\n | | |\n | | (6) following ‘true’ branch...\n |\n ‘US_LoadConfig’: event 7\n |\n |cc1:\n | (7): ...to here\n |\n ‘US_LoadConfig’: events 8-16\n |\n | 693 | for (int i = 0; i < 8; i++)\n | | ~~^~~\n | | |\n | | (8) following ‘true’ branch (when ‘i != 8’)...\n | 694 | {\n | 695 | FS_ReadInt8LE(ck_highScores[i].name, sizeof(ck_highScores[i].name), f);\n | | ~~~~~~~~~~~~~~~~~~~~~\n | | |\n | | (9) ...to here\n |......\n | 700 | if (FS_ReadInt16LE(&intVal, 1, f))\n | | ~\n | | |\n | | (10) following ‘false’ branch...\n | 701 | sd = (SD_SoundMode)intVal;\n | 702 | if (FS_ReadInt16LE(&intVal, 1, f))\n | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | ||\n | | |(11) ...to here\n | | (12) following ‘false’ branch...\n |......\n | 705 | FS_ReadInt16LE(&inputDevice, 1, f);\n | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | |\n | | (13) ...to here\n |......\n | 751 | SD_Default(configFileLoaded && (hadAdlib == SD_IsAdlibPresent()), sd, sm);\n | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | | | |\n | | | | (15) ...to here\n | | | (14) following ‘true’ branch (when ‘configFileLoaded != 0’)...\n | | (16) use of uninitialized value ‘sd’ here\n |\nid_us_1.c:751:9: warning: use of uninitialized value ‘sm’ [CWE-457] [-Wanalyzer-use-of-uninitialized-value]\n 751 | SD_Default(configFileLoaded && (hadAdlib == SD_IsAdlibPresent()), sd, sm);\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n ‘US_Startup’: events 1-2\n |\n | 883 | void US_Startup(void)\n | | ^~~~~~~~~~\n | | |\n | | (1) entry to ‘US_Startup’\n |......\n | 889 | US_LoadConfig();\n | | ~~~~~~~~~~~~~~~\n | | |\n | | (2) calling ‘US_LoadConfig’ from ‘US_Startup’\n |\n +--> ‘US_LoadConfig’: events 3-6\n |\n | 666 | void US_LoadConfig(void)\n | | ^~~~~~~~~~~~~\n | | |\n | | (3) entry to ‘US_LoadConfig’\n |......\n | 670 | ID_MusicMode sm;\n | | ~~\n | | |\n | | (4) region created on stack here\n | | (5) capacity: 4 bytes\n |......\n | 689 | if (FS_IsFileValid(f))\n | | ~\n | | |\n | | (6) following ‘true’ branch...\n |\n ‘US_LoadConfig’: event 7\n |\n |cc1:\n | (7): ...to here\n |\n ‘US_LoadConfig’: events 8-16\n |\n | 693 | for (int i = 0; i < 8; i++)\n | | ~~^~~\n | | |\n | | (8) following ‘true’ branch (when ‘i != 8’)...\n | 694 | {\n | 695 | FS_ReadInt8LE(ck_highScores[i].name, sizeof(ck_highScores[i].name), f);\n | | ~~~~~~~~~~~~~~~~~~~~~\n | | |\n | | (9) ...to here\n |......\n | 700 | if (FS_ReadInt16LE(&intVal, 1, f))\n | | ~\n | | |\n | | (10) following ‘false’ branch...\n | 701 | sd = (SD_SoundMode)intVal;\n | 702 | if (FS_ReadInt16LE(&intVal, 1, f))\n | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | ||\n | | |(11) ...to here\n | | (12) following ‘false’ branch...\n |......\n | 705 | FS_ReadInt16LE(&inputDevice, 1, f);\n | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | |\n | | (13) ...to here\n |......\n | 751 | SD_Default(configFileLoaded && (hadAdlib == SD_IsAdlibPresent()), sd, sm);\n | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | | | |\n | | | | (15) ...to here\n | | | (14) following ‘true’ branch (when ‘configFileLoaded != 0’)...\n | | (16) use of uninitialized value ‘sm’ here\n |","shortMessageHtmlLink":"id_us_1: Initialise the sd/sm mode passed to SD_Default()"}},{"before":"23193307e657b929edba894d9297598d5f8b635e","after":"ee9fe55e0edad902060580599454eda521db30e4","ref":"refs/heads/master","pushedAt":"2023-10-16T05:30:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"id_sd: Initialise sfxChunkOffset for sdm_Off case\n\nIn SD_SetSoundMode(), the sound sd_sfxChunkArray array is configured\nbased on the current sound mode. This only happens if the call was\nsuccessful, and soundAvailable is true. However, soundAvailable is true\neven if sounds are turned off, in which case sfxChunkOffset is never\ninitialised.\n\nThis isn't actually a problem, as sd_sfxChunkArray is never used if the\nsound mode is sdm_Off, but it was picked up by gcc's new -fanalyze\noption, so we might as well fix it to make future real issues clearer to\nsee.\n\nThere are three warnings here, as there are three paths\nSD_SetSoundMode() can be called through:\nid_sd.c: in function ‘SD_SetSoundMode’:\nid_sd.c:465:45: warning: use of uninitialized value ‘sfxChunkOffset’ [CWE-457] [-Wanalyzer-use-of-uninitialized-value]\n 465 | sd_sfxChunkArray = CA_audio + sfxChunkOffset;\n | ^\n ‘SD_Startup’: events 1-4\n |\n | 533 | void SD_Startup()\n | | ^~~~~~~~~~\n | | |\n | | (1) entry to ‘SD_Startup’\n | 534 | {\n | 535 | if (sd_started)\n | | ~\n | | |\n | | (2) following ‘false’ branch...\n |......\n | 538 | sd_sfxPartRate = CFG_GetConfigInt(\"sd_sfxPartRate\", 140);\n | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | |\n | | (3) ...to here\n |......\n | 581 | SD_SetSoundMode(sdm_Off);\n | | ~~~~~~~~~~~~~~~~~~~~~~~~\n | | |\n | | (4) calling ‘SD_SetSoundMode’ from ‘SD_Startup’\n |\n +--> ‘SD_SetSoundMode’: events 5-12\n |\n | 436 | bool SD_SetSoundMode(SD_SoundMode mode)\n | | ^~~~~~~~~~~~~~~\n | | |\n | | (5) entry to ‘SD_SetSoundMode’\n |......\n | 439 | int16_t sfxChunkOffset;\n | | ~~~~~~~~~~~~~~\n | | |\n | | (6) region created on stack here\n | | (7) capacity: 2 bytes\n | 440 | SD_StopSound();\n | 441 | switch (mode)\n | | ~~~~~~\n | | |\n | | (8) following ‘case 0:’ branch...\n |......\n | 461 | if (soundAvailable && (mode != sd_soundMode))\n | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | | |\n | | | (9) ...to here\n | | (10) following ‘true’ branch...\n |......\n | 464 | sd_soundMode = mode;\n | | ~~~~~~~~~~~~~~~~~~~\n | | |\n | | (11) ...to here\n | 465 | sd_sfxChunkArray = CA_audio + sfxChunkOffset;\n | | ~\n | | |\n | | (12) use of uninitialized value ‘sfxChunkOffset’ here\n |\nid_sd.c:465:45: warning: use of uninitialized value ‘sfxChunkOffset’ [CWE-457] [-Wanalyzer-use-of-uninitialized-value]\n 465 | sd_sfxChunkArray = CA_audio + sfxChunkOffset;\n | ^\n ‘SD_SetSoundMode’: events 1-7\n |\n | 439 | int16_t sfxChunkOffset;\n | | ^~~~~~~~~~~~~~\n | | |\n | | (1) region created on stack here\n | | (2) capacity: 2 bytes\n | 440 | SD_StopSound();\n | 441 | switch (mode)\n | | ~~~~~~\n | | |\n | | (3) following ‘case 0:’ branch...\n |......\n | 461 | if (soundAvailable && (mode != sd_soundMode))\n | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | | |\n | | | (4) ...to here\n | | (5) following ‘true’ branch...\n |......\n | 464 | sd_soundMode = mode;\n | | ~~~~~~~~~~~~~~~~~~~\n | | |\n | | (6) ...to here\n | 465 | sd_sfxChunkArray = CA_audio + sfxChunkOffset;\n | | ~\n | | |\n | | (7) use of uninitialized value ‘sfxChunkOffset’ here\n |\nid_sd.c:465:45: warning: use of uninitialized value ‘sfxChunkOffset’ [CWE-457] [-Wanalyzer-use-of-uninitialized-value]\n 465 | sd_sfxChunkArray = CA_audio + sfxChunkOffset;\n | ^\n ‘SD_Default’: events 1-4\n |\n | 588 | void SD_Default(bool gotit, SD_SoundMode sd, ID_MusicMode sm)\n | | ^~~~~~~~~~\n | | |\n | | (1) entry to ‘SD_Default’\n |......\n | 605 | if (sd != sd_soundMode)\n | | ~\n | | |\n | | (2) following ‘true’ branch...\n | 606 | SD_SetSoundMode(sd);\n | | ~~~~~~~~~~~~~~~~~~~\n | | |\n | | (3) ...to here\n | | (4) calling ‘SD_SetSoundMode’ from ‘SD_Default’\n |\n +--> ‘SD_SetSoundMode’: events 5-12\n |\n | 436 | bool SD_SetSoundMode(SD_SoundMode mode)\n | | ^~~~~~~~~~~~~~~\n | | |\n | | (5) entry to ‘SD_SetSoundMode’\n |......\n | 439 | int16_t sfxChunkOffset;\n | | ~~~~~~~~~~~~~~\n | | |\n | | (6) region created on stack here\n | | (7) capacity: 2 bytes\n | 440 | SD_StopSound();\n | 441 | switch (mode)\n | | ~~~~~~\n | | |\n | | (8) following ‘case 0:’ branch...\n |......\n | 461 | if (soundAvailable && (mode != sd_soundMode))\n | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | | |\n | | | (9) ...to here\n | | (10) following ‘true’ branch...\n |......\n | 464 | sd_soundMode = mode;\n | | ~~~~~~~~~~~~~~~~~~~\n | | |\n | | (11) ...to here\n | 465 | sd_sfxChunkArray = CA_audio + sfxChunkOffset;\n | | ~\n | | |\n | | (12) use of uninitialized value ‘sfxChunkOffset’ here\n |","shortMessageHtmlLink":"id_sd: Initialise sfxChunkOffset for sdm_Off case"}},{"before":"572272d49b60ea68dea67a24f7c0634a2e60a37a","after":"23193307e657b929edba894d9297598d5f8b635e","ref":"refs/heads/master","pushedAt":"2023-10-16T04:56:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"ck_inter: Initialise xpixel in AnimateTerminator\n\nThe new gcc -fanalyze option picked this up. xpixel should start at the\nwidth of the screen, so why not initialise it.\n\nSee:\nck_inter.c: in function ‘AnimateTerminator’:\nck_inter.c:473:29: warmomg: use of uninitialized value ‘xpixel’ [CWE-457] [-Wanalyzer-use-of-uninitialized-value]\n 473 | word_499C7 = xpixel / 8;\n | ~~~~~~~^~~\n ‘CK_DrawTerminator’: events 1-6\n |\n | 990 | void CK_DrawTerminator(void)\n | | ^~~~~~~~~~~~~~~~~\n | | |\n | | (1) entry to ‘CK_DrawTerminator’\n |......\n | 1026 | for (int i = 0; i < 200; i++)\n | | ~~~~~~~\n | | |\n | | (2) following ‘true’ branch (when ‘i != 200’)...\n | | (4) following ‘true’ branch (when ‘i != 200’)...\n |......\n | 1031 | srcptr = (uint16_t *)((uint8_t *)ck_introKeen + ck_introKeen->linestarts[i]);\n | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | |\n | | (3) ...to here\n | | (5) ...to here\n | 1032 | TerminatorExpandRLE(srcptr, destbuf + 25);\n | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | |\n | | (6) calling ‘TerminatorExpandRLE’ from ‘CK_DrawTerminator’\n |\n +--> ‘TerminatorExpandRLE’: events 7-9\n |\n | 481 | void TerminatorExpandRLE(uint16_t *src, uint8_t *dest)\n | | ^~~~~~~~~~~~~~~~~~~\n | | |\n | | (7) entry to ‘TerminatorExpandRLE’\n |......\n | 491 | while ((nextword = *src++) != 0xFFFF)\n | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | |\n | | (8) following ‘false’ branch (when ‘nextword == 65535’)...\n |......\n | 549 | *dest++ = lastbyte;\n | | ~~~~~~~~~~~~~~~~~~\n | | |\n | | (9) ...to here\n |\n <------+\n |\n ‘CK_DrawTerminator’: events 10-19\n |\n | 1026 | for (int i = 0; i < 200; i++)\n | | ~~~~~~~\n | | |\n | | (11) following ‘false’ branch (when ‘i == 200’)...\n |......\n | 1032 | TerminatorExpandRLE(srcptr, destbuf + 25);\n | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | |\n | | (10) returning to ‘CK_DrawTerminator’ from ‘TerminatorExpandRLE’\n |......\n | 1036 | free(destbuf);\n | | ~~~~~~~~~~~~~\n | | |\n | | (12) ...to here\n |......\n | 1054 | for (int i = 0; i < 8; i++)\n | | ~~~~~\n | | |\n | | (13) following ‘true’ branch (when ‘i != 8’)...\n | 1055 | MM_GetPtr(&shiftedCmdrBMPsegs[i], cmdrWidthX100);\n | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | |\n | | (14) ...to here\n |......\n | 1061 | for (int i = 0; i < 100; i++)\n | | ~~~~~~~\n | | |\n | | (15) following ‘true’ branch (when ‘i != 100’)...\n | 1062 | {\n | 1063 | cmdrLineStarts[2 * i] = cmdrLineStarts[2 * i + 1] = i * ck_introCommanderWidth;\n | | ~~~~~~~~~~~~~~~~~~~~~~~~~~\n | | |\n | | (16) ...to here\n |......\n | 1071 | for (int i = 1; i < 8; i++)\n | | ~~~~~\n | | |\n | | (17) following ‘true’ branch (when ‘i != 8’)...\n | 1072 | {\n | 1073 | uint8_t *last = (uint8_t *)shiftedCmdrBMPsegs[i - 1];\n | | ~~~~~\n | | |\n | | (18) ...to here\n |......\n | 1091 | AnimateTerminator();\n | | ~~~~~~~~~~~~~~~~~~~\n | | |\n | | (19) calling ‘AnimateTerminator’ from ‘CK_DrawTerminator’\n |\n +--> ‘AnimateTerminator’: events 20-25\n |\n | 314 | void AnimateTerminator(void)\n | | ^~~~~~~~~~~~~~~~~\n | | |\n | | (20) entry to ‘AnimateTerminator’\n |......\n | 333 | int xpixel;\n | | ~~~~~~\n | | |\n | | (21) region created on stack here\n | | (22) capacity: 4 bytes\n |......\n | 371 | for (elapsedTime = 0; elapsedTime <= maxTime; elapsedTime += SD_GetSpriteSync())\n | | ~~~~~~~~~~~~~~~~~~~~~~\n | | |\n | | (23) following ‘false’ branch (when ‘elapsedTime > maxTime’)...\n |......\n | 473 | word_499C7 = xpixel / 8;\n | | ~~~~~~~~~~\n | | |\n | | (24) ...to here\n | | (25) use of uninitialized value ‘xpixel’ here\n |","shortMessageHtmlLink":"ck_inter: Initialise xpixel in AnimateTerminator"}},{"before":"70bc98d122f4be1cf9e820a3bb71ef38f15ce253","after":"572272d49b60ea68dea67a24f7c0634a2e60a37a","ref":"refs/heads/master","pushedAt":"2023-10-12T13:39:34.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"id_mm: Align arena allocations\n\nMM_ArenaAlloc() only returns byte-aligned blocks of memory, but\ntechnically some of the things we allocate need to be aligned elsewhere.\n\nThis isn't a problem on x86 (except if SSE is used, and it isn't), but\nubsan picks up on it.\n\nAdd MM_ArenaAllocAligned(), which also accepts a power-of-two alignment.\nWe then use that where ubsan complains.\n\nThere are a few things missing, though:\n- The typechecked versions aren't aligned.\n- There's no implementation for the debug arena. This is not a huge\n problem, as it uses malloc() which is guaranteed to return\n sufficiently aligned data.\n- The alignment for most types is hardcoded to their sizeof(). We should\n use alignof(), but support older compilers, so will need a ck_cross()\n wrapper or similar.","shortMessageHtmlLink":"id_mm: Align arena allocations"}},{"before":"b852e37dc5898a0f3bd51a699d80749dea717756","after":"70bc98d122f4be1cf9e820a3bb71ef38f15ce253","ref":"refs/heads/master","pushedAt":"2023-10-12T13:37:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sulix","name":"David Gow","path":"/sulix","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2116479?s=80&v=4"},"commit":{"message":"id_mm: Align arena allocations\n\nMM_ArenaAlloc() only returns byte-aligned blocks of memory, but\ntechnically some of the things we allocate need to be aligned elsewhere.\n\nThis isn't a problem on x86 (except if SSE is used, and it isn't), but\nubsan picks up on it.\n\nAdd MM_ArenaAllocAligned(), which also accepts a power-of-two alignment.\nWe then use that where ubsan complains.\n\nThere are a few things missing, though:\n- The typechecked versions aren't aligned.\n- There's no implementation for the debug arena. This is not a huge\n problem, as it uses malloc() which is guaranteed to return\n sufficiently aligned data.\n- The alignment for most types is hardcoded to their sizeof(). We should\n use alignof(), but support older compilers, so will need a ck_cross()\n wrapper or similar.","shortMessageHtmlLink":"id_mm: Align arena allocations"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEKJ_YEwA","startCursor":null,"endCursor":null}},"title":"Activity · sulix/omnispeak"}