SRD_PRIV void srd_inst_free_all(GSList *stack) { GSList *l; struct srd_decoder_inst *di; di = NULL; for (l = stack ? stack : di_list; di == NULL && l != NULL; l = l->next) { di = l->data; if (di->next_di) srd_inst_free_all(di->next_di); srd_inst_free(di); } if (!stack) { g_slist_free(di_list); di_list = NULL; } }
/** @private */ SRD_PRIV void srd_inst_free_all(struct srd_session *sess, GSList *stack) { GSList *l; struct srd_decoder_inst *di; if (session_is_valid(sess) != SRD_OK) { srd_err("Invalid session."); return; } di = NULL; for (l = stack ? stack : sess->di_list; di == NULL && l != NULL; l = l->next) { di = l->data; if (di->next_di) srd_inst_free_all(sess, di->next_di); srd_inst_free(di); } if (!stack) { g_slist_free(sess->di_list); sess->di_list = NULL; } }