Fixes: NB#276265 - After SSU with build version 20.2011.32-0.REQ.759009, applications running in the background and foreground are crashing

RevBy: Pertti Kellomaki
pull/1/head
Alexey Shilov 14 years ago
parent 73fc43a171
commit fdab30f13e

2
debian/changelog vendored

@ -1,6 +1,6 @@
applauncherd (1.0.4) unstable; urgency=low applauncherd (1.0.4) unstable; urgency=low
* * Fixes: NB#276265 - After SSU with build version 20.2011.32-0.REQ.759009, applications running in the background and foreground are crashing
-- Alexey Shilov <alexey.shilov@nokia.com> Mon, 15 Aug 2011 11:30:49 +0300 -- Alexey Shilov <alexey.shilov@nokia.com> Mon, 15 Aug 2011 11:30:49 +0300

@ -765,16 +765,14 @@ void Daemon::killBoosters()
void Daemon::setUnixSignalHandler(int signum, sighandler_t handler) void Daemon::setUnixSignalHandler(int signum, sighandler_t handler)
{ {
struct sigaction *oldAct = new struct sigaction(); sighandler_t old_handler = signal(signum, handler);
struct sigaction newAct;
newAct.sa_handler = handler; if (old_handler != SIG_ERR)
sigemptyset(&newAct.sa_mask); {
newAct.sa_flags |= SA_RESTART; m_originalSigHandlers[signum] = old_handler;
if (sigaction(signum, &newAct, oldAct) == 0) }
else
{ {
m_originalSigHandlers[signum] = oldAct;
} else {
throw std::runtime_error("Daemon: Failed to set signal handler"); throw std::runtime_error("Daemon: Failed to set signal handler");
} }
} }
@ -783,7 +781,7 @@ void Daemon::restoreUnixSignalHandlers()
{ {
for (SigHandlerMap::iterator it = m_originalSigHandlers.begin(); it != m_originalSigHandlers.end(); it++ ) for (SigHandlerMap::iterator it = m_originalSigHandlers.begin(); it != m_originalSigHandlers.end(); it++ )
{ {
sigaction(it->first, it->second, NULL); signal(it->first, it->second);
} }
m_originalSigHandlers.clear(); m_originalSigHandlers.clear();

@ -232,7 +232,7 @@ private:
SingleInstance * m_singleInstance; SingleInstance * m_singleInstance;
//! Original unix signal handlers are saved here //! Original unix signal handlers are saved here
typedef map<int, struct sigaction*> SigHandlerMap; typedef map<int, sighandler_t> SigHandlerMap;
SigHandlerMap m_originalSigHandlers; SigHandlerMap m_originalSigHandlers;
#ifdef UNIT_TEST #ifdef UNIT_TEST

Loading…
Cancel
Save