diff options
author | inmarket <andrewh@inmarket.com.au> | 2013-12-21 17:36:40 +1000 |
---|---|---|
committer | inmarket <andrewh@inmarket.com.au> | 2013-12-21 17:36:40 +1000 |
commit | 20854bd69f6737a54459f428f4bf6a199d8a8102 (patch) | |
tree | b88dece71cbf8e82316b579ee29eb95edc131b7a /src | |
parent | e85780bc3fba26e34c1f3c72a5663302739b4077 (diff) | |
download | uGFX-20854bd69f6737a54459f428f4bf6a199d8a8102.tar.gz uGFX-20854bd69f6737a54459f428f4bf6a199d8a8102.tar.bz2 uGFX-20854bd69f6737a54459f428f4bf6a199d8a8102.zip |
Mouse calibration data might be returned in a non-aligned structure. Copy safely.
Diffstat (limited to 'src')
-rw-r--r-- | src/ginput/mouse.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/ginput/mouse.c b/src/ginput/mouse.c index 7ca50272..eb59c9e9 100644 --- a/src/ginput/mouse.c +++ b/src/ginput/mouse.c @@ -24,6 +24,8 @@ #error "GINPUT: GFX_USE_GDISP must be defined when mouse or touch calibration is required" #endif + #include <string.h> // Required for memcpy + #define GINPUT_MOUSE_CALIBRATION_FONT "* Double" #define GINPUT_MOUSE_CALIBRATION_FONT2 "* Narrow" #define GINPUT_MOUSE_CALIBRATION_TEXT "Calibration" @@ -352,7 +354,7 @@ GSourceHandle ginputGetMouse(uint16_t instance) { MouseConfig.fnsavecal = ginput_lld_mouse_calibration_save; #endif if (MouseConfig.fnloadcal && (pc = (Calibration *)MouseConfig.fnloadcal(instance))) { - MouseConfig.caldata = pc[0]; + memcpy(&MouseConfig.caldata, pc, sizeof(MouseConfig.caldata)) MouseConfig.flags |= (FLG_CAL_OK|FLG_CAL_SAVED); if ((MouseConfig.flags & FLG_CAL_FREE)) gfxFree((void *)pc); |