Don't parse 32bit hex values with strtol

On a 32bit machine this will truncate values with MSB set to 0x7fffffff

Fixes #164

(thanks to Linus for pointing me in the right direction)

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2013-11-22 13:31:52 -08:00
parent 781266bf18
commit a6b35141e4
2 changed files with 2 additions and 2 deletions

View file

@ -19,7 +19,7 @@ typedef struct device_data_t {
dc_descriptor_t *descriptor; dc_descriptor_t *descriptor;
const char *vendor, *product, *devname; const char *vendor, *product, *devname;
const char *model; const char *model;
unsigned int deviceid, diveid; uint32_t deviceid, diveid;
dc_device_t *device; dc_device_t *device;
dc_context_t *context; dc_context_t *context;
int preexisting; int preexisting;

View file

@ -656,7 +656,7 @@ static void double_to_permil(char *buffer, void *_i)
static void hex_value(char *buffer, void *_i) static void hex_value(char *buffer, void *_i)
{ {
uint32_t *i = _i; uint32_t *i = _i;
*i = strtol(buffer, NULL, 16); *i = strtoul(buffer, NULL, 16);
} }
static void get_tripflag(char *buffer, void *_tf) static void get_tripflag(char *buffer, void *_tf)