Index: trunk/src/game/PetHandler.cpp
===================================================================
--- trunk/src/game/PetHandler.cpp (revision 174)
+++ trunk/src/game/PetHandler.cpp (revision 191)
@@ -105,7 +105,4 @@
                         return;
 
-                    if(pet->getVictim())
-                        pet->AttackStop();
-
                     if(pet->GetTypeId() != TYPEID_PLAYER)
                     {
@@ -124,4 +121,7 @@
                     else                                    // charmed player
                     {
+                        if(pet->getVictim() && pet->getVictim() != TargetUnit)
+                            pet->AttackStop();
+
                         pet->Attack(TargetUnit,true);
                         pet->SendPetAIReaction(guid1);
Index: trunk/src/game/PetAI.cpp
===================================================================
--- trunk/src/game/PetAI.cpp (revision 186)
+++ trunk/src/game/PetAI.cpp (revision 191)
@@ -66,6 +66,9 @@
 void PetAI::AttackStart(Unit *u)
 {
-    if( inCombat || !u || (i_pet.isPet() && ((Pet&)i_pet).getPetType() == MINI_PET) )
-        return;
+    if( !u || (i_pet.isPet() && ((Pet&)i_pet).getPetType() == MINI_PET) )
+        return;
+
+    if (inCombat && i_pet.getVictim() && u != i_pet.getVictim())
+        i_pet.AttackStop();
 
     if(i_pet.Attack(u,true))
