From 6d988b06ec1b26d69475a4a9d1068525090749c5 Mon Sep 17 00:00:00 2001
From: Daniel Albers <daniel@lbers.com>
Date: Wed, 12 Aug 2009 22:43:27 +0200
Subject: [PATCH] fixes #746 "Quassel unsets default modes ...

... set by server upon first connect"
---
 src/core/corenetwork.cpp       |    3 ++-
 src/core/postgresqlstorage.cpp |    2 ++
 src/core/sqlitestorage.cpp     |    2 ++
 3 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/src/core/corenetwork.cpp b/src/core/corenetwork.cpp
index 21415ae..3b2b85d 100644
--- a/src/core/corenetwork.cpp
+++ b/src/core/corenetwork.cpp
@@ -484,7 +484,8 @@ void CoreNetwork::restoreUserModes() {
   QString addModes = Core::userModes(userId(), networkId());
   QString currentModes = me_->userModes();
 
-  removeModes = currentModes;
+  if(addModes)
+    removeModes = currentModes;
   removeModes.remove(QRegExp(QString("[%1]").arg(addModes)));
   addModes.remove(QRegExp(QString("[%1]").arg(currentModes)));
 
diff --git a/src/core/postgresqlstorage.cpp b/src/core/postgresqlstorage.cpp
index d8a6284..01b0036 100644
--- a/src/core/postgresqlstorage.cpp
+++ b/src/core/postgresqlstorage.cpp
@@ -851,6 +851,8 @@ QString PostgreSqlStorage::userModes(UserId user, NetworkId networkId) {
   QString modes;
   if(query.first())
     modes = query.value(0).toString();
+  else
+    modes = 0;
   return modes;
 }
 
diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp
index 2f4fa09..5ab1593 100644
--- a/src/core/sqlitestorage.cpp
+++ b/src/core/sqlitestorage.cpp
@@ -904,6 +904,8 @@ QString SqliteStorage::userModes(UserId user, NetworkId networkId) {
   QString modes;
   if(query.first())
     modes = query.value(0).toString();
+  else
+    modes = 0;
   db.commit();
   unlock();
 
-- 
1.6.0.4

