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.
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.
....
}
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
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;
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());
}
}