diff --git a/src/plugins/qt4projectmanager/qt-s60/s60deploystep.cpp b/src/plugins/qt4projectmanager/qt-s60/s60deploystep.cpp
index b2f56980cca4b1738ab2402d1fdcf971a5fe6409..8a1c47bd95c7aae6d1239708c34e4ba51f8de22c 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60deploystep.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60deploystep.cpp
@@ -135,8 +135,9 @@ bool S60DeployStep::init()
     setDisplayName(tr("Deploy", "Qt4 DeployStep display name."));
     QString message;
     m_launcher = trk::Launcher::acquireFromDeviceManager(m_serialPortName, this, &message);
-    if (!message.isEmpty()) {
-        trk::Launcher::releaseToDeviceManager(m_launcher);
+    if (!message.isEmpty() || !m_launcher) {
+        if (m_launcher)
+            trk::Launcher::releaseToDeviceManager(m_launcher);
         delete m_launcher;
         m_launcher = 0;
         appendMessage(message, true);
diff --git a/src/shared/symbianutils/launcher.cpp b/src/shared/symbianutils/launcher.cpp
index 4f8eaf7ad28875a776edf4840e649c2deb5309a6..7218deec062d6402dbc4011a7e9a5e15c15d4fe5 100644
--- a/src/shared/symbianutils/launcher.cpp
+++ b/src/shared/symbianutils/launcher.cpp
@@ -1033,6 +1033,8 @@ Launcher *Launcher::acquireFromDeviceManager(const QString &serverName,
 // Preliminary release of device, disconnecting the signal.
 void Launcher::releaseToDeviceManager(Launcher *launcher)
 {
+    Q_ASSERT(launcher);
+
     SymbianUtils::SymbianDeviceManager *sdm = SymbianUtils::SymbianDeviceManager::instance();
     // Disentangle launcher and its device, remove connection from destroyed
     launcher->setCloseDevice(false);