X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=session_file.c;h=cb99bf27ad3f4367fb97529225db63a787fca405;hb=133a37bfba1a7e1423716b2b872d3bb82a2e64d9;hp=08de48c2001d996b5e1295430fcd28b9e8475ed1;hpb=cd853ff0b2b0ad2643d65e73159661e1a3c6bc66;p=libsigrok.git diff --git a/session_file.c b/session_file.c index 08de48c2..cb99bf27 100644 --- a/session_file.c +++ b/session_file.c @@ -230,7 +230,7 @@ int sr_session_save(const char *filename) device->plugin_index, SR_DI_CUR_SAMPLERATE)); s = sr_samplerate_string(samplerate); fprintf(meta, "samplerate = %s\n", s); - free(s); + g_free(s); } probecnt = 1; for (p = device->probes; p; p = p->next) { @@ -245,8 +245,14 @@ int sr_session_save(const char *filename) } /* dump datastore into logic-n */ - buf = malloc(ds->num_units * ds->ds_unitsize + + buf = g_try_malloc(ds->num_units * ds->ds_unitsize + DATASTORE_CHUNKSIZE); + if (!buf) { + sr_err("session file: %s: buf malloc failed", + __func__); + return SR_ERR_MALLOC; + } + bufcnt = 0; for (d = ds->chunklist; d; d = d->next) { memcpy(buf + bufcnt, d->data,