Examples of errors detected by the V669 diagnostic
V669. Argument is a non-constant reference. The analyzer is unable to determine the position where this argument is modified. Consider checking the function for an error.
CMaNGOS
V669 The 'uiHealedAmount' argument is a non-constant reference. The analyzer is unable to determine the position at which this argument is being modified. It is possible that the function contains an error. boss_twinemperors.cpp 109
void
HealedBy(Unit* pHealer, uint32& uiHealedAmount) override
{
if (!m_pInstance)
return;
if (Creature* pTwin =
m_pInstance->GetSingleCreatureFromStorage(
m_creature->GetEntry() == NPC_VEKLOR ?
NPC_VEKNILASH :
NPC_VEKLOR))
{
float fHealPercent = ((float)uiHealedAmount) /
((float)m_creature->GetMaxHealth());
uint32 uiTwinHeal =
(uint32)(fHealPercent * ((float)pTwin->GetMaxHealth()));
uint32 uiTwinHealth = pTwin->GetHealth() + uiTwinHeal;
pTwin->SetHealth(uiTwinHealth < pTwin->GetMaxHealth() ?
uiTwinHealth :
pTwin->GetMaxHealth());
}
}
Micro-Manager
V669 The 'offset' argument is a non-constant reference. The analyzer is unable to determine the position at which this argument is being modified. It is possible that the function contains an error. pgFocus.cpp 356
int pgFocus::GetOffset(double& offset)
{
MM_THREAD_GUARD_LOCK(&mutex);
deviceInfo_.offset = offset;
MM_THREAD_GUARD_UNLOCK(&mutex);
return DEVICE_OK;
}
Strange code. Most likely this is what should be written here: offset = deviceInfo_.offset;
CryEngine 3 SDK
V669 The 'outThreat' argument is a non-constant reference. The analyzer is unable to determine the position at which this argument is being modified. It is possible that the function contains an error. targettrackthreatmodifier.cpp 48
void CTargetTrackThreatModifier::ModifyTargetThreat(
IAIObject &ownerAI, IAIObject &targetAI,
const ITargetTrack &track,
float &outThreatRatio,
EAITargetThreat &outThreat) const
{
if (track.GetTargetType() > AITARGET_SOUND &&
outThreat >= AITHREAT_AGGRESSIVE)
{
outThreatRatio = 1.0f;
}
}
Similar errors can be found in some other places:
- V669 The 'chatter', 'actorId' arguments are non-constant references. The analyzer is unable to determine the position at which this argument is being modified. It is possible that the function contains an error. battlechatter.cpp 418
WinMerge
V669 The 'sel1' argument is a non-constant reference. The analyzer is unable to determine the position at which this argument is being modified. It is possible that the function contains an error. dirview.cpp 1322
bool CDirView::OpenOneItem(
UINT_PTR pos1, DIFFITEM **di1, DIFFITEM **di2,
String &path1, String &path2, int & sel1, bool & isDir)
{
....
// Variable 'sel1' don't modified.
....
}