From 65b6e19a35c1bde5ee3c132ade076ee5f42e6559 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 4 Jan 2012 11:54:51 -0500 Subject: [PATCH] libarchive: Avoid bogus conversion warning from PGI compiler We cannot suppress PGI compiler warnings completely because even with the "-w" flag the compiler still writes a message containing "compilation completed with warnings" to stderr. A warning is triggered by expressions like test ? NULL : ptr_to_const_char test ? ".." : ptr_to_const_char that the PGI compiler handles incorrectly. It chooses the pointer type of the first option (either void* or char*) and warns about conversion of the second without a cast. Flip the expression logic to !test ? ptr_to_const_char : NULL !test ? ptr_to_const_char : ".." to help the compiler choose the proper result type. --- Utilities/cmlibarchive/libarchive/archive_options.c | 6 +++--- Utilities/cmlibarchive/libarchive/archive_read.c | 2 +- .../libarchive/archive_read_support_format_7zip.c | 2 +- Utilities/cmlibarchive/libarchive/archive_write.c | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Utilities/cmlibarchive/libarchive/archive_options.c b/Utilities/cmlibarchive/libarchive/archive_options.c index 962572c76..79b4ffbda 100644 --- a/Utilities/cmlibarchive/libarchive/archive_options.c +++ b/Utilities/cmlibarchive/libarchive/archive_options.c @@ -41,9 +41,9 @@ _archive_set_option(struct archive *a, archive_check_magic(a, magic, ARCHIVE_STATE_NEW, fn); - mp = m != NULL && m[0] == '\0' ? NULL : m; - op = o != NULL && o[0] == '\0' ? NULL : o; - vp = v != NULL && v[0] == '\0' ? NULL : v; + mp = m != NULL && m[0] != '\0' ? m : NULL; + op = o != NULL && o[0] != '\0' ? o : NULL; + vp = v != NULL && v[0] != '\0' ? v : NULL; if (op == NULL && vp == NULL) return (ARCHIVE_OK); diff --git a/Utilities/cmlibarchive/libarchive/archive_read.c b/Utilities/cmlibarchive/libarchive/archive_read.c index 441be5316..6d7f2633b 100644 --- a/Utilities/cmlibarchive/libarchive/archive_read.c +++ b/Utilities/cmlibarchive/libarchive/archive_read.c @@ -902,7 +902,7 @@ static const char * _archive_filter_name(struct archive *_a, int n) { struct archive_read_filter *f = get_filter(_a, n); - return f == NULL ? NULL : f->name; + return f != NULL ? f->name : NULL; } static int64_t diff --git a/Utilities/cmlibarchive/libarchive/archive_read_support_format_7zip.c b/Utilities/cmlibarchive/libarchive/archive_read_support_format_7zip.c index 756f08d59..3a124051e 100644 --- a/Utilities/cmlibarchive/libarchive/archive_read_support_format_7zip.c +++ b/Utilities/cmlibarchive/libarchive/archive_read_support_format_7zip.c @@ -1095,7 +1095,7 @@ init_decompression(struct archive_read *a, struct _7zip *zip, } archive_set_error(&a->archive, err, "Internal error initializing decompressor: %s", - detail == NULL ? "??" : detail); + detail != NULL ? detail : "??"); zip->bzstream_valid = 0; return (ARCHIVE_FAILED); } diff --git a/Utilities/cmlibarchive/libarchive/archive_write.c b/Utilities/cmlibarchive/libarchive/archive_write.c index c742d6071..b4b3867f0 100644 --- a/Utilities/cmlibarchive/libarchive/archive_write.c +++ b/Utilities/cmlibarchive/libarchive/archive_write.c @@ -698,7 +698,7 @@ static const char * _archive_filter_name(struct archive *_a, int n) { struct archive_write_filter *f = filter_lookup(_a, n); - return f == NULL ? NULL : f->name; + return f != NULL ? f->name : NULL; } static int64_t