diff options
author | Stephan Bergmann <stephan.bergmann@allotropia.de> | 2024-03-24 18:17:28 +0100 |
---|---|---|
committer | Stephan Bergmann <stephan.bergmann@allotropia.de> | 2024-03-25 07:57:17 +0100 |
commit | 85a2bb9f52a0d834b02681344ce56e0b091e1abd (patch) | |
tree | 089ea692316c85053ce67c8060df65332240c9b2 | |
parent | fb94c8f64a15ff4bf45f1d2adfab9cb50a696d71 (diff) |
Avoid -Werror,-Wcast-function-type-mismatch
Change-Id: I93a69c57856169aeff613e34d5c0bf7fa08a0de7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165251
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
-rw-r--r-- | sal/osl/unx/signal.cxx | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/sal/osl/unx/signal.cxx b/sal/osl/unx/signal.cxx index 0e05b40a656b..463d0512d85a 100644 --- a/sal/osl/unx/signal.cxx +++ b/sal/osl/unx/signal.cxx @@ -50,14 +50,17 @@ namespace { -extern "C" using Handler1 = void (*)(int); -extern "C" using Handler2 = void (*)(int, siginfo_t *, void *); +extern "C" using Handler1_t = void (*)(int); +extern "C" using Handler2_t = void (*)(int, siginfo_t *, void *); struct SignalAction { int Signal; int Action; - Handler1 Handler; - bool siginfo; // Handler's type is Handler2 + union { + Handler1_t Handler1; + Handler2_t Handler2; + }; + bool siginfo; // Handler2 is active } Signals[] = { { SIGHUP, ACT_HIDE, SIG_DFL, false }, /* hangup */ @@ -205,13 +208,13 @@ bool onInitSignal() if (sigaction(rSignal.Signal, &ign, &oact) == 0) { rSignal.siginfo = (oact.sa_flags & SA_SIGINFO) != 0; if (rSignal.siginfo) { - rSignal.Handler = reinterpret_cast<Handler1>( - oact.sa_sigaction); + rSignal.Handler2 = + oact.sa_sigaction; } else { - rSignal.Handler = oact.sa_handler; + rSignal.Handler1 = oact.sa_handler; } } else { - rSignal.Handler = SIG_DFL; + rSignal.Handler1 = SIG_DFL; rSignal.siginfo = false; } } @@ -221,13 +224,13 @@ bool onInitSignal() if (sigaction(rSignal.Signal, &act, &oact) == 0) { rSignal.siginfo = (oact.sa_flags & SA_SIGINFO) != 0; if (rSignal.siginfo) { - rSignal.Handler = reinterpret_cast<Handler1>( - oact.sa_sigaction); + rSignal.Handler2 = + oact.sa_sigaction; } else { - rSignal.Handler = oact.sa_handler; + rSignal.Handler1 = oact.sa_handler; } } else { - rSignal.Handler = SIG_DFL; + rSignal.Handler1 = SIG_DFL; rSignal.siginfo = false; } } @@ -263,11 +266,11 @@ bool onDeInitSignal() && (bSetILLHandler || Signals[i].Signal != SIGILL))) { if (Signals[i].siginfo) { - act.sa_sigaction = reinterpret_cast<Handler2>( - Signals[i].Handler); + act.sa_sigaction = + Signals[i].Handler2; act.sa_flags = SA_SIGINFO; } else { - act.sa_handler = Signals[i].Handler; + act.sa_handler = Signals[i].Handler1; act.sa_flags = 0; } @@ -306,9 +309,9 @@ void callSystemHandler(int signal, siginfo_t * info, void * context) if (i >= NoSignals) return; - if ((Signals[i].Handler == SIG_DFL) || - (Signals[i].Handler == SIG_IGN) || - (Signals[i].Handler == SIG_ERR)) + if ((Signals[i].Handler1 == SIG_DFL) || + (Signals[i].Handler1 == SIG_IGN) || + (Signals[i].Handler1 == SIG_ERR)) { switch (Signals[i].Action) { @@ -335,10 +338,10 @@ void callSystemHandler(int signal, siginfo_t * info, void * context) } } else if (Signals[i].siginfo) { - (*reinterpret_cast<Handler2>(Signals[i].Handler))( + (*Signals[i].Handler2)( signal, info, context); } else { - (*Signals[i].Handler)(signal); + (*Signals[i].Handler1)(signal); } } |