]> Sergey Matveev's repositories - tofuproxy.git/commitdiff
Explicit memory freeing
authorSergey Matveev <stargrave@stargrave.org>
Mon, 1 Nov 2021 09:08:18 +0000 (12:08 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Mon, 1 Nov 2021 09:08:18 +0000 (12:08 +0300)
cmd/enzstd/enzstd.c

index b91ecb2bdc5938bd5c0ec4f82aa1115ad3e12ac0..3655d79aa571e487c83fab902da02c1e99c1d237 100644 (file)
@@ -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;
 };