From 008c60a31d6e130d07c55751ef52ccfebac0b19b Mon Sep 17 00:00:00 2001
From: Sandro Mani <manisandro@gmail.com>
Date: Tue, 27 Jan 2015 10:42:16 +0100
Subject: [PATCH] -Wstrict-aliasing fixes
---
src/libambit/device_driver_common.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/libambit/device_driver_common.c b/src/libambit/device_driver_common.c
index 951ac33..859efb3 100644
--- a/src/libambit/device_driver_common.c
+++ b/src/libambit/device_driver_common.c
@@ -24,6 +24,7 @@
#include "debug.h"
#include <stdlib.h>
+#include <string.h>
/*
* Local definitions
@@ -70,23 +71,25 @@ int libambit_device_driver_date_time_set(ambit_object_t *object, struct tm *tm)
{
uint8_t date_data[8] = { 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00 };
uint8_t time_data[8];
+ uint16_t year = htole16(1900 + tm->tm_year);
+ uint16_t sec = htole16(1000*tm->tm_sec);
int ret = -1;
LOG_INFO("Writing date and time to clock");
// Set date
- *(uint16_t*)(&date_data[0]) = htole16(1900 + tm->tm_year);
+ memcpy(&date_data[0], &year, sizeof(uint16_t));
date_data[2] = 1 + tm->tm_mon;
date_data[3] = tm->tm_mday;
// byte[4-7] unknown (but set to 0x28000000 in moveslink)
// Set time (+date)
- *(uint16_t*)(&time_data[0]) = htole16(1900 + tm->tm_year);
+ memcpy(&time_data[0], &year, sizeof(uint16_t));
time_data[2] = 1 + tm->tm_mon;
time_data[3] = tm->tm_mday;
time_data[4] = tm->tm_hour;
time_data[5] = tm->tm_min;
- *(uint16_t*)(&time_data[6]) = htole16(1000*tm->tm_sec);
+ memcpy(&time_data[6], &sec, sizeof(uint16_t));
if (libambit_protocol_command(object, ambit_command_date, date_data, sizeof(date_data), NULL, NULL, 0) == 0 &&
libambit_protocol_command(object, ambit_command_time, time_data, sizeof(time_data), NULL, NULL, 0) == 0) {
--
2.2.2