Silence false positive unaligned pointer access warning
This is a warning coming up on Android (ARM) platform. Clang 4.x creates a false positive here: the can_id is the first (and aligned) value in the packed struct modattr, so it's always aligned if the struct itself is aligned.pull/118/head
parent
02b87eb120
commit
f6e07960d3
4
cangw.c
4
cangw.c
|
|
@ -282,6 +282,7 @@ int parse_mod(char *optarg, struct modattr *modmsg)
|
||||||
{
|
{
|
||||||
char *ptr, *nptr;
|
char *ptr, *nptr;
|
||||||
char hexdata[17] = {0};
|
char hexdata[17] = {0};
|
||||||
|
canid_t can_id;
|
||||||
|
|
||||||
ptr = optarg;
|
ptr = optarg;
|
||||||
nptr = strchr(ptr, ':');
|
nptr = strchr(ptr, ':');
|
||||||
|
|
@ -330,9 +331,10 @@ int parse_mod(char *optarg, struct modattr *modmsg)
|
||||||
ptr++;
|
ptr++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sscanf(++ptr, "%x.%hhx.%16s", &modmsg->cf.can_id,
|
if (sscanf(++ptr, "%x.%hhx.%16s", &can_id,
|
||||||
(unsigned char *)&modmsg->cf.can_dlc, hexdata) != 3)
|
(unsigned char *)&modmsg->cf.can_dlc, hexdata) != 3)
|
||||||
return 5;
|
return 5;
|
||||||
|
modmsg->cf.can_id = can_id;
|
||||||
|
|
||||||
/* 4-bit masks can have values from 0 to 0xF */
|
/* 4-bit masks can have values from 0 to 0xF */
|
||||||
if (modmsg->cf.can_dlc > 0xF)
|
if (modmsg->cf.can_dlc > 0xF)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue