Fix a bunch of aliasing warnings.

This commit is contained in:
Alcaro 2014-12-31 16:36:56 +01:00
parent 85fb0b784c
commit fcc7da1270
1 changed files with 12 additions and 9 deletions

View File

@ -345,26 +345,29 @@ static int read_uint(int fd, uint64_t *out, size_t size)
static int read_int(int fd, int64_t *out, size_t size) static int read_int(int fd, int64_t *out, size_t size)
{ {
uint64_t tmp; uint8_t tmp8;
if(read(fd, &tmp, size) == -1) uint16_t tmp16;
uint32_t tmp32;
uint64_t tmp64;
if(read(fd, &tmp64, size) == -1)
return -errno; return -errno;
switch(size) switch(size)
{ {
case 1: case 1:
*out = *((int8_t*)(&tmp)); *out = *((int8_t*)(&tmp64));
break; break;
case 2: case 2:
tmp = betoht16(tmp); tmp16 = betoht16(tmp64);
*out = *((int16_t*)(&tmp)); *out = *((int16_t*)(&tmp16));
break; break;
case 4: case 4:
tmp = betoht32(tmp); tmp32 = betoht32(tmp64);
*out = *((int32_t*)(&tmp)); *out = *((int32_t*)(&tmp32));
break; break;
case 8: case 8:
tmp = betoht64(tmp); tmp64 = betoht64(tmp64);
*out = *((int64_t*)(&tmp)); *out = *((int64_t*)(&tmp64));
break; break;
} }
return 0; return 0;