diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index 851d61c6a8a425f888bd61e7c682a5920ddce7d7..63f2a3d7198223e675a1b0b290e8fdff00e3ae6d 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -542,14 +542,18 @@ QString BaseTextEditorWidget::msgTextTooLarge(quint64 size)
 void BaseTextEditorWidget::updateCannotDecodeInfo()
 {
     setReadOnly(d->m_document->hasDecodingError());
+    Core::InfoBar *infoBar = d->m_document->infoBar();
+    Core::Id selectEncodingId(Constants::SELECT_ENCODING);
     if (d->m_document->hasDecodingError()) {
-        Core::InfoBarEntry info(Core::Id(Constants::SELECT_ENCODING),
+        if (!infoBar->canInfoBeAdded(selectEncodingId))
+            return;
+        Core::InfoBarEntry info(selectEncodingId,
             tr("<b>Error:</b> Could not decode \"%1\" with \"%2\"-encoding. Editing not possible.")
             .arg(d->m_document->displayName()).arg(QString::fromLatin1(d->m_document->codec()->name())));
         info.setCustomButtonInfo(tr("Select Encoding"), this, SLOT(selectEncoding()));
-        d->m_document->infoBar()->addInfo(info);
+        infoBar->addInfo(info);
     } else {
-        d->m_document->infoBar()->removeInfo(Core::Id(Constants::SELECT_ENCODING));
+        infoBar->removeInfo(selectEncodingId);
     }
 }