Index: trunk/src/game/SpellEffects.cpp
===================================================================
--- trunk/src/game/SpellEffects.cpp (revision 126)
+++ trunk/src/game/SpellEffects.cpp (revision 128)
@@ -4899,5 +4899,5 @@
 
     // caster or target already have requested duel
-    if( caster->duel || target->duel || target->GetSocial()->HasIgnore(caster->GetGUIDLow()) )
+    if( caster->duel || target->duel || !target->GetSocial() || target->GetSocial()->HasIgnore(caster->GetGUIDLow()) )
         return;
 
Index: trunk/src/game/Chat.cpp
===================================================================
--- trunk/src/game/Chat.cpp (revision 112)
+++ trunk/src/game/Chat.cpp (revision 128)
@@ -796,5 +796,11 @@
             continue;
 
-        (list += "\n    ") += table[i].Name;
+        if(m_session)
+            list += "\n    ";
+        else
+            list += "\n\r    ";
+
+        list += table[i].Name;
+
 		if(table[i].ChildCommands)
 			list += " ...";
Index: trunk/src/game/WorldSession.cpp
===================================================================
--- trunk/src/game/WorldSession.cpp (revision 112)
+++ trunk/src/game/WorldSession.cpp (revision 128)
@@ -386,4 +386,5 @@
         _player->CleanupsBeforeDelete();                    // do some cleanup before deleting to prevent crash at crossreferences to already deleted data
 
+        sSocialMgr.RemovePlayerSocial (_player->GetGUIDLow ());
         delete _player;
         _player = NULL;
Index: trunk/src/game/Player.cpp
===================================================================
--- trunk/src/game/Player.cpp (revision 120)
+++ trunk/src/game/Player.cpp (revision 128)
@@ -434,8 +434,5 @@
     CleanupsBeforeDelete();
 
-    if(m_uint32Values)                                      // only for fully created Object
-    {
-        sSocialMgr.RemovePlayerSocial(GetGUIDLow());
-    }
+    //m_social = NULL;
 
     // Note: buy back item already deleted from DB when player was saved
