X-Git-Url: https://git.ao2.it/libam7xxx.git/blobdiff_plain/fc26cf192559400a4dce1341dbb691fc5c987b96..2c897cad505d3ba27723dcff7252ff123d90ab53:/src/am7xxx.c diff --git a/src/am7xxx.c b/src/am7xxx.c index 08858cd..c039147 100644 --- a/src/am7xxx.c +++ b/src/am7xxx.c @@ -386,8 +386,6 @@ static int read_header(am7xxx_device *dev, struct am7xxx_header *h) unserialize_header(dev->buffer, h); - debug_dump_header(dev->ctx, h); - if (h->direction == AM7XXX_DIRECTION_IN) { ret = 0; } else { @@ -396,6 +394,8 @@ static int read_header(am7xxx_device *dev, struct am7xxx_header *h) ret = -EINVAL; } + debug_dump_header(dev->ctx, h); + out: return ret; } @@ -406,7 +406,13 @@ static int send_header(am7xxx_device *dev, struct am7xxx_header *h) debug_dump_header(dev->ctx, h); + /* For symmetry with read_header() we should check here for + * h->direction == AM7XXX_DIRECTION_OUT but we just ensure that in all + * the callers and save some cycles here. + */ + serialize_header(h, dev->buffer); + ret = send_data(dev, dev->buffer, AM7XXX_HEADER_WIRE_SIZE); if (ret < 0) error(dev->ctx, "failed to send data\n"); @@ -453,8 +459,6 @@ static am7xxx_device *add_new_device(am7xxx_context *ctx) return NULL; } - devices_list = &(ctx->devices_list); - new_device = malloc(sizeof(*new_device)); if (new_device == NULL) { fatal("cannot allocate a new device (%s)\n", strerror(errno)); @@ -464,6 +468,8 @@ static am7xxx_device *add_new_device(am7xxx_context *ctx) new_device->ctx = ctx; + devices_list = &(ctx->devices_list); + if (*devices_list == NULL) { *devices_list = new_device; } else {