]> git.ipfire.org Git - thirdparty/xz.git/commitdiff
xz: signals: suppress -Wsign-conversion on macOS
authorSam James <sam@gentoo.org>
Thu, 11 Apr 2024 18:34:04 +0000 (19:34 +0100)
committerLasse Collin <lasse.collin@tukaani.org>
Sun, 14 Apr 2024 14:26:43 +0000 (17:26 +0300)
On macOS, we get:
```
signals.c: In function 'signals_init':
signals.c:76:17: error: conversion to 'sigset_t' {aka 'unsigned int'} from 'int' may change the sign of the result [-Werror=sign-conversion]
   76 |                 sigaddset(&hooked_signals, sigs[i]);
      |                 ^~~~~~~~~
signals.c:81:17: error: conversion to 'sigset_t' {aka 'unsigned int'} from 'int' may change the sign of the result [-Werror=sign-conversion]
   81 |                 sigaddset(&hooked_signals, message_progress_sigs[i]);
      |                 ^~~~~~~~~
signals.c:86:9: error: conversion to 'sigset_t' {aka 'unsigned int'} from 'int' may change the sign of the result [-Werror=sign-conversion]
   86 |         sigaddset(&hooked_signals, SIGTSTP);
      |         ^~~~~~~~~
```

We use `int` for `hooked_signals` but we can't just cast to whatever
`sigset_t` is because `sigset_t` is an opaque type. It's an unsigned int
on macOS. On macOS, `sigaddset` is implemented as a macro.

Just suppress -Wsign-conversion for `signals_init` for macOS given
there's no real nice way of fixing this.

src/xz/signals.c

index 13cc4c2b0c2f8c8dee50d56ac5571d980c05caf8..20f03beee8a502cddfe09db2cab25bb1b63a95c7 100644 (file)
@@ -49,6 +49,10 @@ signal_handler(int sig)
 }
 
 
+#ifdef __APPLE__
+#      pragma GCC diagnostic push
+#      pragma GCC diagnostic ignored "-Wsign-conversion"
+#endif
 extern void
 signals_init(void)
 {
@@ -127,6 +131,9 @@ signals_init(void)
 
        return;
 }
+#ifdef __APPLE__
+#      pragma GCC diagnostic pop
+#endif
 
 
 #ifndef __VMS