]> Sergey Matveev's repositories - tofuproxy.git/commitdiff
uint8_t -> char
authorSergey Matveev <stargrave@stargrave.org>
Fri, 17 Dec 2021 14:43:15 +0000 (17:43 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Fri, 17 Dec 2021 14:48:32 +0000 (17:48 +0300)
Because only character types are safe for strict aliasing.
POSIX requires them to be 8-bit and two's complement.

cmd/zstd/default.do
cmd/zstd/enzstd.c
cmd/zstd/unzstd.c

index 387fbb535208afe99967a7eb52ee1732bac2269f..c3296373cd8274d6ddc8fb6a6bc804216ab34f6c 100644 (file)
@@ -2,4 +2,4 @@ src=$1.c
 redo-ifchange $src conf/zstd.cflags.rc conf/zstd.libs.rc
 read ZSTD_CFLAGS < conf/zstd.cflags.rc
 read ZSTD_LIBS < conf/zstd.libs.rc
-${CC:-cc} $CFLAGS $ZSTD_CFLAGS -o $3 $src $ZSTD_LIBS
+${CC:-cc} -fstrict-aliasing $CFLAGS $ZSTD_CFLAGS -o $3 $src $ZSTD_LIBS
index c393f777230b430a84fb10a9c29a55cc7e516043..1c66962dd9bc41edeecf3b0bf9806305b4aba9cf 100644 (file)
@@ -50,13 +50,13 @@ main(int argc, char **argv)
 
     int rc         = EXIT_FAILURE;
     size_t srcSize = 8;
-    uint8_t *src   = malloc(srcSize);
+    char *src      = malloc(srcSize);
     if (src == NULL) {
         fprintf(stderr, "can not allocate memory: %zu\n", srcSize);
         goto Exit;
     };
     size_t dstSize     = 0;
-    uint8_t *dst       = NULL;
+    char *dst          = NULL;
     size_t srcWantSize = 0;
     size_t dstWantSize = 0;
     size_t n           = 0;
index caddee5f6e4aebbef6822a77b42fe66f16bc6ac5..1e0c1cdff12165051f2d19cdc94345f51a77e14f 100644 (file)
@@ -51,8 +51,8 @@ main(int argc, char **argv)
         return 1;
     };
     int rc                 = EXIT_FAILURE;
-    uint8_t *bufIn         = NULL;
-    uint8_t *bufOut        = NULL;
+    char *bufIn            = NULL;
+    char *bufOut           = NULL;
     const size_t bufInSize = ZSTD_DStreamInSize();
     bufIn                  = malloc(bufInSize);
     if (bufIn == NULL) {
@@ -92,7 +92,7 @@ ReadAgain:
         if (n >= 8 && le32dec(bufIn) == 0x184D2A5D) {
             // dictionary frame
             size_t dictSize = (size_t)le32dec(bufIn + 4);
-            uint8_t *dict   = malloc(dictSize);
+            char *dict      = malloc(dictSize);
             if (dict == NULL) {
                 fprintf(stderr, "insufficient memory for dictionary: %zu\n", dictSize);
                 goto Exit;
@@ -134,7 +134,7 @@ ReadAgain:
                     free(dict);
                     goto Exit;
                 };
-                uint8_t *buf = malloc(bufSize);
+                char *buf = malloc(bufSize);
                 if (buf == NULL) {
                     fprintf(
                         stderr, "insufficient memory for dictionary: %llu\n", bufSize);