From 75056045f8cd11801a4ab47700b80cc034c8e1a4 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Wed, 12 Dec 2018 15:32:07 +0100 Subject: x-plane: fix memset discarding qualifiers --- x-plane-plugin/plugin.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'x-plane-plugin') diff --git a/x-plane-plugin/plugin.c b/x-plane-plugin/plugin.c index b0482d69..b062bb02 100644 --- a/x-plane-plugin/plugin.c +++ b/x-plane-plugin/plugin.c @@ -159,6 +159,15 @@ static int TranslationToggleHandler(XPLMCommandRef inCommand, return 0; } +static inline +void volatile_explicit_bzero(void volatile* restrict ptr, size_t len) +{ + for (size_t i = 0; i < len; i++) + *((char volatile* restrict)ptr + i) = 0; + + asm volatile("" ::: "memory"); +} + PLUGIN_API OTR_GENERIC_EXPORT int XPluginStart (char* outName, char* outSignature, char* outDescription) { view_x = XPLMFindDataRef("sim/aircraft/view/acf_peX"); @@ -189,7 +198,7 @@ int XPluginStart (char* outName, char* outSignature, char* outDescription) { return 0; } shm_posix = lck_posix->mem; - memset(shm_posix, 0, sizeof(WineSHM)); + volatile_explicit_bzero(shm_posix, sizeof(WineSHM)); strcpy(outName, "opentrack"); strcpy(outSignature, "opentrack - freetrack lives!"); strcpy(outDescription, "head tracking view control"); -- cgit v1.2.3