output/srzip: silence "use after free" compiler warning

Defer memory g_free() until after the data gets accessed one last time.

This was reported by clang's scan-build.
This commit is contained in:
Gerhard Sittig 2018-02-08 22:06:53 +01:00 committed by Uwe Hermann
parent a21fef07b6
commit d3ec7035bc
1 changed files with 2 additions and 1 deletions

View File

@ -379,12 +379,13 @@ static int zip_append_analog(const struct sr_output *o,
analogsrc = zip_source_buffer(archive, chunkbuf, chunksize, FALSE); analogsrc = zip_source_buffer(archive, chunkbuf, chunksize, FALSE);
chunkname = g_strdup_printf("%s-%u", basename, next_chunk_num); chunkname = g_strdup_printf("%s-%u", basename, next_chunk_num);
i = zip_add(archive, chunkname, analogsrc); i = zip_add(archive, chunkname, analogsrc);
g_free(chunkname);
if (i < 0) { if (i < 0) {
sr_err("Failed to add chunk '%s': %s", chunkname, zip_strerror(archive)); sr_err("Failed to add chunk '%s': %s", chunkname, zip_strerror(archive));
g_free(chunkname);
zip_source_free(analogsrc); zip_source_free(analogsrc);
goto err_free_chunkbuf; goto err_free_chunkbuf;
} }
g_free(chunkname);
if (zip_close(archive) < 0) { if (zip_close(archive) < 0) {
sr_err("Error saving session file: %s", zip_strerror(archive)); sr_err("Error saving session file: %s", zip_strerror(archive));
goto err_free_chunkbuf; goto err_free_chunkbuf;