From: Sergey Matveev Date: Mon, 1 Nov 2021 09:08:18 +0000 (+0300) Subject: Explicit memory freeing X-Git-Tag: v0.1.0~50 X-Git-Url: http://www.git.stargrave.org/?p=tofuproxy.git;a=commitdiff_plain;h=3d8e30bfabbce6bf4d7525daa84ebe1872fd39e5 Explicit memory freeing --- diff --git a/cmd/enzstd/enzstd.c b/cmd/enzstd/enzstd.c index b91ecb2..3655d79 100644 --- a/cmd/enzstd/enzstd.c +++ b/cmd/enzstd/enzstd.c @@ -41,11 +41,12 @@ main(int argc, char **argv) return EXIT_FAILURE; }; + int rc = EXIT_FAILURE; size_t srcSize = 8; uint8_t *src = malloc(srcSize); if (src == NULL) { fprintf(stderr, "can not allocate memory: %zu\n", srcSize); - return EXIT_FAILURE; + goto Exit; }; size_t dstSize = 0; uint8_t *dst = NULL; @@ -59,7 +60,7 @@ main(int argc, char **argv) break; }; perror("can not fread(stdin)"); - return EXIT_FAILURE; + goto Exit; }; srcWantSize = (size_t)be64dec(src); if (srcWantSize > srcSize) { @@ -68,13 +69,13 @@ main(int argc, char **argv) src = malloc(srcSize); if (src == NULL) { fprintf(stderr, "can not allocate memory: %zu\n", srcSize); - return EXIT_FAILURE; + goto Exit; }; }; n = fread(src, 1, srcWantSize, stdin); if (n < srcWantSize) { fputs("insufficient data fed\n", stderr); - return EXIT_FAILURE; + goto Exit; }; dstWantSize = ZSTD_compressBound(srcWantSize); if (dstWantSize > dstSize) { @@ -83,22 +84,25 @@ main(int argc, char **argv) dst = malloc(dstSize); if (dst == NULL) { fprintf(stderr, "can not allocate memory: %zu\n", dstSize); - return EXIT_FAILURE; + goto Exit; }; }; zCode = ZSTD_compress2(ctx, dst, dstSize, src, srcWantSize); if (ZSTD_isError(zCode)) { fprintf(stderr, "can not compress: %s\n", ZSTD_getErrorName(zCode)); - return EXIT_FAILURE; + goto Exit; }; n = fwrite(dst, 1, zCode, stdout); if (n < zCode) { perror("can not fwrite(stdout)"); - return EXIT_FAILURE; + goto Exit; }; }; + rc = EXIT_SUCCESS; + +Exit: free(dst); free(src); ZSTD_freeCCtx(ctx); - return EXIT_SUCCESS; + return rc; };