X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fsession_file.c;h=9f5c5157f3f07d5410ec4326b01c06b6cbfec9ca;hb=176d785d33a28a1bb24f2ee483595ec54f7b52b6;hp=fd0dbd07309f98f315726c3b0930020c9c8f9e93;hpb=7c69b528e4e216be213ff2a1bacaced6df3fe38f;p=libsigrok.git diff --git a/src/session_file.c b/src/session_file.c index fd0dbd07..9f5c5157 100644 --- a/src/session_file.c +++ b/src/session_file.c @@ -212,6 +212,7 @@ SR_API int sr_session_load(struct sr_context *ctx, const char *filename, int unitsize; char **sections, **keys, *val; char channelname[SR_MAX_CHANNELNAME_LEN + 1]; + gboolean file_has_logic; if ((ret = sr_sessionfile_check(filename)) != SR_OK) return ret; @@ -233,8 +234,11 @@ SR_API int sr_session_load(struct sr_context *ctx, const char *filename, return ret; } + total_channels = 0; + error = NULL; ret = SR_OK; + file_has_logic = FALSE; sections = g_key_file_get_groups(kf, NULL); for (i = 0; sections[i] && ret == SR_OK; i++) { if (!strcmp(sections[i], "global")) @@ -261,6 +265,7 @@ SR_API int sr_session_load(struct sr_context *ctx, const char *filename, sr_config_set(sdi, NULL, SR_CONF_CAPTUREFILE, g_variant_new_string(val)); g_free(val); + file_has_logic = TRUE; } g_clear_error(&error); @@ -277,7 +282,7 @@ SR_API int sr_session_load(struct sr_context *ctx, const char *filename, g_free(val); sr_config_set(sdi, NULL, SR_CONF_SAMPLERATE, g_variant_new_uint64(tmp_u64)); - } else if (!strcmp(keys[j], "unitsize")) { + } else if (!strcmp(keys[j], "unitsize") && file_has_logic) { unitsize = g_key_file_get_integer(kf, sections[i], keys[j], &error); if (!sdi || unitsize <= 0 || error) {