aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorinmarket <andrewh@inmarket.com.au>2013-12-21 17:36:40 +1000
committerinmarket <andrewh@inmarket.com.au>2013-12-21 17:36:40 +1000
commit20854bd69f6737a54459f428f4bf6a199d8a8102 (patch)
treeb88dece71cbf8e82316b579ee29eb95edc131b7a /src
parente85780bc3fba26e34c1f3c72a5663302739b4077 (diff)
downloaduGFX-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.c4
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);