mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-06 22:37:22 +00:00
(svn r8131) -Fix (r8125): g++ warning: 'invalid access to non-static data member ‘<class>::<member>’ of NULL object'. It is weird, but renaming the 'offsetof' macro helped.
This commit is contained in:
parent
b028d8c201
commit
f8a434e9fc
@ -372,7 +372,7 @@ static void FixOldVehicles(void)
|
||||
* - OCL_CHUNK: load an other proc to load a part of the savegame, 'amount' times
|
||||
* - OCL_ASSERT: to check if we are really at the place we expect to be.. because old savegames are too binary to be sure ;)
|
||||
*/
|
||||
#define OCL_SVAR(type, base, offset) { type, 1, NULL, (uint)offsetof(base, offset), NULL }
|
||||
#define OCL_SVAR(type, base, offset) { type, 1, NULL, (uint)cpp_offsetof(base, offset), NULL }
|
||||
#define OCL_VAR(type, amount, pointer) { type, amount, pointer, 0, NULL }
|
||||
#define OCL_END() { OC_END, 0, NULL, 0, NULL }
|
||||
#define OCL_NULL(amount) { OC_NULL, amount, NULL, 0, NULL }
|
||||
|
@ -183,7 +183,7 @@ typedef struct SaveLoad {
|
||||
typedef SaveLoad SaveLoadGlobVarList;
|
||||
|
||||
/* Simple variables, references (pointers) and arrays */
|
||||
#define SLE_GENERAL(cmd, base, variable, type, length, from, to) {cmd, type, length, from, to, (void*)offsetof(base, variable)}
|
||||
#define SLE_GENERAL(cmd, base, variable, type, length, from, to) {cmd, type, length, from, to, (void*)cpp_offsetof(base, variable)}
|
||||
#define SLE_CONDVAR(base, variable, type, from, to) SLE_GENERAL(SL_VAR, base, variable, type, 0, from, to)
|
||||
#define SLE_CONDREF(base, variable, type, from, to) SLE_GENERAL(SL_REF, base, variable, type, 0, from, to)
|
||||
#define SLE_CONDARR(base, variable, type, length, from, to) SLE_GENERAL(SL_ARR, base, variable, type, length, from, to)
|
||||
|
12
src/stdafx.h
12
src/stdafx.h
@ -290,10 +290,18 @@ assert_compile(sizeof(uint8) == 1);
|
||||
#define lengthof(x) (sizeof(x)/sizeof(x[0]))
|
||||
#define endof(x) (&x[lengthof(x)])
|
||||
#define lastof(x) (&x[lengthof(x) - 1])
|
||||
#ifndef offsetof
|
||||
# define offsetof(s,m) (size_t)&(((s *)0)->m)
|
||||
|
||||
#ifdef offsetof
|
||||
# undef offsetof
|
||||
#endif
|
||||
|
||||
#ifndef __cplusplus
|
||||
# define offsetof(s,m) (size_t)&(((s *)0)->m)
|
||||
#else /* __cplusplus */
|
||||
# define cpp_offsetof(s,m) (((size_t)&reinterpret_cast<const volatile char&>((((s*)(char*)8)->m))) - 8)
|
||||
# define offsetof(s,m) cpp_offsetof(s, m)
|
||||
#endif /* __cplusplus */
|
||||
|
||||
|
||||
// take care of some name clashes on macos
|
||||
#if defined(__APPLE__)
|
||||
|
Loading…
Reference in New Issue
Block a user