Skip to content

Commit 20176b0

Browse files
committed
Use __COUNTER__ to avoid issues with shadow guards stored in member structures
1 parent db8ce68 commit 20176b0

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

src/BadAccessGuards.h

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -243,12 +243,16 @@ struct BadAccessGuardConfig
243243
BadAccessGuardConfig BadAccessGuardGetConfig();
244244
void BadAccessGuardSetConfig(BadAccessGuardConfig config);
245245

246+
#define BA_GUARD_MERGE_NAME(a,b) a##b
247+
246248
#define BA_GUARD_DECL(SHADOWNAME) mutable BadAccessGuardShadow SHADOWNAME
247-
#define BA_GUARD_READ(SHADOWNAME) BadAccessGuardRead BAGuardRead_##SHADOWNAME{SHADOWNAME}
248-
#define BA_GUARD_READ_EX(SHADOWNAME,ASSERT_OR_WARN,MESSAGE) BadAccessGuardRead BAGuardRead_##SHADOWNAME{SHADOWNAME, (ASSERT_OR_WARN), (MESSAGE)}
249-
#define BA_GUARD_WRITE(SHADOWNAME) BadAccessGuardWrite BAGuardWrite_##SHADOWNAME{SHADOWNAME}
250-
#define BA_GUARD_WRITE_EX(SHADOWNAME,ASSERT_OR_WARN,MESSAGE) BadAccessGuardWriteEx BAGuardWriteEx_##SHADOWNAME{SHADOWNAME, (ASSERT_OR_WARN), (MESSAGE)}
251-
#define BA_GUARD_DESTROY(SHADOWNAME) BadAccessGuardDestroy BAGuardDestroy_##SHADOWNAME{SHADOWNAME}
249+
#define BA_GUARD_READ(SHADOWNAME) BadAccessGuardRead BA_GUARD_MERGE_NAME(BAGuardRead_,__COUNTER__){SHADOWNAME}
250+
#define BA_GUARD_READ_EX(SHADOWNAME,ASSERT_OR_WARN,MESSAGE) BadAccessGuardRead BA_GUARD_MERGE_NAME(BAGuardRead_,__COUNTER__){SHADOWNAME, (ASSERT_OR_WARN), (MESSAGE)}
251+
#define BA_GUARD_WRITE(SHADOWNAME) BadAccessGuardWrite BA_GUARD_MERGE_NAME(BAGuardWrite_,__COUNTER__){SHADOWNAME}
252+
#define BA_GUARD_WRITE_EX(SHADOWNAME,ASSERT_OR_WARN,MESSAGE) BadAccessGuardWriteEx BA_GUARD_MERGE_NAME(BAGuardWriteEx_,__COUNTER__){SHADOWNAME, (ASSERT_OR_WARN), (MESSAGE)}
253+
#define BA_GUARD_DESTROY(SHADOWNAME) BadAccessGuardDestroy BA_GUARD_MERGE_NAME(BAGuardDestroy_,__COUNTER__){SHADOWNAME}
254+
255+
#undef BA_GUARD_MERGE_NAME
252256

253257
#else // BAD_ACCESS_GUARDS_ENABLE
254258

0 commit comments

Comments
 (0)