diff --git a/shared/cplusplus/CheckDeclaration.cpp b/shared/cplusplus/CheckDeclaration.cpp
index b4c381d6175b061fdc7670b9b091346485a5ffa1..6915faf82ceb6b8cd67f3540a9347894eb95c42e 100644
--- a/shared/cplusplus/CheckDeclaration.cpp
+++ b/shared/cplusplus/CheckDeclaration.cpp
@@ -236,13 +236,21 @@ bool CheckDeclaration::visit(FunctionDefinitionAST *ast)
 
     _scope->enterSymbol(fun);
 
-    if (ast->ctor_initializer && (ty.isValid() || (fun->identity() && ! fun->identity()->isNameId()))) {
-        translationUnit()->error(ast->ctor_initializer->firstToken(),
-                                 "only constructors take base initializers");
+    if (ast->ctor_initializer) {
+        bool looksLikeCtor = false;
+        if (ty.isValid() || ! fun->identity())
+            looksLikeCtor = false;
+        else if (fun->identity()->isNameId() || fun->identity()->isTemplateNameId())
+            looksLikeCtor = true;
+
+        if (! looksLikeCtor) {
+            translationUnit()->error(ast->ctor_initializer->firstToken(),
+                                     "only constructors take base initializers");
+        }
     }
 
-    int previousVisibility = semantic()->switchVisibility(Symbol::Public);
-    int previousMethodKey = semantic()->switchMethodKey(Function::NormalMethod);
+    const int previousVisibility = semantic()->switchVisibility(Symbol::Public);
+    const int previousMethodKey = semantic()->switchMethodKey(Function::NormalMethod);
 
     semantic()->check(ast->function_body, fun->members());
 
diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp
index 04875e12fd5d20c13047afac43d8753bd64ceec6..f696d728467654a5df68124e060c28f030c97fcc 100644
--- a/src/plugins/debugger/debuggermanager.cpp
+++ b/src/plugins/debugger/debuggermanager.cpp
@@ -791,6 +791,11 @@ bool DebuggerManager::startNewDebugger(StartMode mode)
         m_processArgs = QStringList();
         m_workingDir = QString();
         m_attachedPID = dlg.attachPID();
+        if (m_attachedPID == 0) {
+            QMessageBox::warning(mainWindow(), tr("Warning"),
+                tr("Cannot attach to PID 0"));
+            return false;
+        }
     } else if (startMode() == startInternal) {
         if (m_executable.isEmpty()) {
             QString startDirectory = m_executable;