Revision r4068
👤 helixhorned
📅 2013-09-21 06:38:44 -0700 (Sat, 21 Sep 2013)
Prevent calling function pointers cast to an incompatible type.
Most often, this had happened when casting comparison functions for qsort()
like these: "int yax_cmpbunches(const int16_t *b1, const int16_t *b2)"
to a function pointer type expecting "const void *". Alas, this is undefined
behavior: see
http://blog.frama-c.com/index.php?post/2013/08/24/Function-pointers-in-C
and posts linked from it.
At least two cases have not been fixed:
- The savegame system maintains pointers which are either to data or a function in
the generic "void *". This ought to be made into a union.
- Probably also:
#define OSD_ALIAS (int32_t (*)(const osdfuncparm_t*))0x1337
Revision r4067
👤 helixhorned
📅 2013-09-21 06:38:07 -0700 (Sat, 21 Sep 2013)
Minor changes for Lunatic utils, replace missed sound flag literals with macros.
Revision r4066
👤 helixhorned
📅 2013-09-21 06:37:31 -0700 (Sat, 21 Sep 2013)
Add WIP x86_64 assembly texture mapping routines.
- Currently: only tvlineasm1 and tvlineasm2, but incomplete (no reverse
translucency, nonpow2 textures will crash)
- For System V AMD64 calling conventions; requires YASM
------------------------------------------------------------------------
Raw Content
------------------------------------------------------------------------
r4069 | helixhorned | 2013-09-21 06:38:56 -0700 (Sat, 21 Sep 2013) | 6 lines
In C++ build, fix "narrowing conversion inside { } is ill-formed" warning.
This also exposes an actual issue. The sound definitions may be dynamically
remapped, in which case they are not necessarily <=255 any more.
BUILD_LUNATIC.
------------------------------------------------------------------------
r4068 | helixhorned | 2013-09-21 06:38:44 -0700 (Sat, 21 Sep 2013) | 14 lines
Prevent calling function pointers cast to an incompatible type.
Most often, this had happened when casting comparison functions for qsort()
like these: "int yax_cmpbunches(const int16_t *b1, const int16_t *b2)"
to a function pointer type expecting "const void *". Alas, this is undefined
behavior: see
http://blog.frama-c.com/index.php?post/2013/08/24/Function-pointers-in-C
and posts linked from it.
At least two cases have not been fixed:
- The savegame system maintains pointers which are either to data or a function in
the generic "void *". This ought to be made into a union.
- Probably also:
#define OSD_ALIAS (int32_t (*)(const osdfuncparm_t*))0x1337
------------------------------------------------------------------------
r4067 | helixhorned | 2013-09-21 06:38:07 -0700 (Sat, 21 Sep 2013) | 1 line
Minor changes for Lunatic utils, replace missed sound flag literals with macros.
------------------------------------------------------------------------
r4066 | helixhorned | 2013-09-21 06:37:31 -0700 (Sat, 21 Sep 2013) | 5 lines
Add WIP x86_64 assembly texture mapping routines.
- Currently: only tvlineasm1 and tvlineasm2, but incomplete (no reverse
translucency, nonpow2 textures will crash)
- For System V AMD64 calling conventions; requires YASM
------------------------------------------------------------------------