summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2021-05-03 14:57:27 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2021-05-03 14:58:32 +0200
commit147ac93a065e215545488337efbaa6dceebc04d0 (patch)
treef1048d0a23cf41f5fadca871f536737d51072cbd
parent74e1f321c147753573e4b6bcd34e98708b5ece52 (diff)
decompress_gunzip: simplify ERR_RET bit clearing
My gcc is in fact clever enough to do it itself, but let's be explicit Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--archival/libarchive/decompress_gunzip.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/archival/libarchive/decompress_gunzip.c b/archival/libarchive/decompress_gunzip.c
index e93cd5005..d051ecb81 100644
--- a/archival/libarchive/decompress_gunzip.c
+++ b/archival/libarchive/decompress_gunzip.c
@@ -230,9 +230,8 @@ static void huft_free(huft_t *p)
* If 'p' has the error bit set we have to clear it, otherwise we might run
* into a segmentation fault or an invalid pointer to free(p)
*/
- if (BAD_HUFT(p)) {
- p = (huft_t*)((uintptr_t)(p) ^ (uintptr_t)(ERR_RET));
- }
+ //if (BAD_HUFT(p)) // commented out, since bit clearing has effect only if condition is true
+ p = (huft_t*)((uintptr_t)p & ~(uintptr_t)ERR_RET);
/* Go through linked list, freeing from the malloced (t[-1]) address. */
while (p) {