X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fsession.c;h=41ebcf22353633c2e79f0f9f1117457c85950259;hb=3fc3fbe46e472a1466085bb2498d8d9b469d63f8;hp=4aeddcc2c348c49fd97b3abe791e586efce40b7e;hpb=877a6d09d54d48814e8cf27a67eab0756136f2ae;p=libsigrok.git diff --git a/src/session.c b/src/session.c index 4aeddcc2..41ebcf22 100644 --- a/src/session.c +++ b/src/session.c @@ -365,8 +365,7 @@ SR_API int sr_session_dev_add(struct sr_session *session, sr_strerror(ret)); return ret; } - if ((ret = sdi->driver->dev_acquisition_start(sdi, - sdi)) != SR_OK) { + if ((ret = sdi->driver->dev_acquisition_start(sdi)) != SR_OK) { sr_err("Failed to start acquisition of device in " "running session (%s)", sr_strerror(ret)); return ret; @@ -812,8 +811,12 @@ SR_API int sr_session_start(struct sr_session *session) /* Have all devices start acquisition. */ for (l = session->devs; l; l = l->next) { - sdi = l->data; - ret = sdi->driver->dev_acquisition_start(sdi, sdi); + if (!(sdi = l->data)) { + sr_err("Device sdi was NULL, can't start session."); + ret = SR_ERR; + break; + } + ret = sdi->driver->dev_acquisition_start(sdi); if (ret != SR_OK) { sr_err("Could not start %s device %s acquisition.", sdi->driver->name, sdi->connection_id); @@ -828,7 +831,7 @@ SR_API int sr_session_start(struct sr_session *session) for (l = session->devs; l != lend; l = l->next) { sdi = l->data; if (sdi->driver->dev_acquisition_stop) - sdi->driver->dev_acquisition_stop(sdi, sdi); + sdi->driver->dev_acquisition_stop(sdi); } /* TODO: Handle delayed stops. Need to iterate the event * sources... */ @@ -912,7 +915,7 @@ static gboolean session_stop_sync(void *user_data) for (node = session->devs; node; node = node->next) { sdi = node->data; if (sdi->driver && sdi->driver->dev_acquisition_stop) - sdi->driver->dev_acquisition_stop(sdi, sdi); + sdi->driver->dev_acquisition_stop(sdi); } return G_SOURCE_REMOVE; @@ -1525,7 +1528,7 @@ SR_PRIV int sr_packet_copy(const struct sr_datafeed_packet *packet, break; case SR_DF_LOGIC: logic = packet->payload; - logic_copy = g_malloc(sizeof(logic)); + logic_copy = g_malloc(sizeof(*logic_copy)); logic_copy->length = logic->length; logic_copy->unitsize = logic->unitsize; memcpy(logic_copy->data, logic->data, logic->length * logic->unitsize); @@ -1533,7 +1536,7 @@ SR_PRIV int sr_packet_copy(const struct sr_datafeed_packet *packet, break; case SR_DF_ANALOG_OLD: analog_old = packet->payload; - analog_old_copy = g_malloc(sizeof(analog_old)); + analog_old_copy = g_malloc(sizeof(*analog_old_copy)); analog_old_copy->channels = g_slist_copy(analog_old->channels); analog_old_copy->num_samples = analog_old->num_samples; analog_old_copy->mq = analog_old->mq; @@ -1546,7 +1549,7 @@ SR_PRIV int sr_packet_copy(const struct sr_datafeed_packet *packet, break; case SR_DF_ANALOG: analog = packet->payload; - analog_copy = g_malloc(sizeof(analog)); + analog_copy = g_malloc(sizeof(*analog_copy)); analog_copy->data = g_malloc( analog->encoding->unitsize * analog->num_samples); memcpy(analog_copy->data, analog->data,