X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=instance.c;h=a94118f2430de4991f70708522999fc49e02b53c;hp=6fbdc01fe7e888c57b43e9ad2a3af6cd5dd2788a;hb=60d4764a9c699d0b4aca656831a4d8d09568b659;hpb=9553e9622bb26dfbe6296ef6f330b1cf0f5b40e6 diff --git a/instance.c b/instance.c index 6fbdc01..a94118f 100644 --- a/instance.c +++ b/instance.c @@ -280,6 +280,7 @@ SRD_API int srd_inst_channel_set_all(struct srd_decoder_inst *di, pdch = g_slist_nth(di->decoder->channels, i)->data; srd_err("Required channel '%s' (index %d) was not specified.", pdch->id, i); + g_free(new_channelmap); return SRD_ERR; } @@ -1255,7 +1256,6 @@ SRD_PRIV int srd_inst_decode(struct srd_decoder_inst *di, di->inbuflen = inbuflen; di->got_new_samples = TRUE; di->handled_all_samples = FALSE; - di->want_wait_terminate = FALSE; /* Signal the thread that we have new data. */ g_cond_signal(&di->got_new_samples_cond); @@ -1267,6 +1267,8 @@ SRD_PRIV int srd_inst_decode(struct srd_decoder_inst *di, g_cond_wait(&di->handled_all_samples_cond, &di->data_mutex); g_mutex_unlock(&di->data_mutex); + if (di->want_wait_terminate) + return SRD_ERR_TERM_REQ; return SRD_OK; }