fixing tabcompleter crash in non channel buffers... ooooops
[quassel.git] / src / uisupport / tabcompleter.cpp
index f13636c..cd82ee2 100644 (file)
@@ -41,13 +41,14 @@ TabCompleter::TabCompleter(InputLine *inputLine_)
 }
 
 void TabCompleter::buildCompletionList() {
+  // ensure a safe state in case we return early.
   completionMap.clear();
+  nextCompletion = completionMap.begin();
+
   // this is the first time tab is pressed -> build up the completion list and it's iterator
   QModelIndex currentIndex = Client::bufferModel()->currentIndex();
-  if(!currentIndex.data(NetworkModel::BufferIdRole).isValid()) {
-    nextCompletion = completionMap.begin();
+  if(!currentIndex.data(NetworkModel::BufferIdRole).isValid())
     return;
-  }
   
   NetworkId networkId = currentIndex.data(NetworkModel::NetworkIdRole).value<NetworkId>();
   QString channelName = currentIndex.sibling(currentIndex.row(), 0).data().toString();
@@ -70,7 +71,7 @@ void TabCompleter::buildCompletionList() {
   */
 
   QString tabAbbrev = inputLine->text().left(inputLine->cursorPosition()).section(' ',-1,-1);
-  QRegExp regex(QString("^[^a-zA-Z]*").append(tabAbbrev), Qt::CaseInsensitive);
+  QRegExp regex(QString("^[^a-zA-Z]*").append(QRegExp::escape(tabAbbrev)), Qt::CaseInsensitive);
 
   foreach(IrcUser *ircUser, channel->ircUsers()) {
     if(regex.indexIn(ircUser->nick()) > -1) {