mirror of https://github.com/Icinga/icinga2.git
Fix: Dict initializer incorrectly re-initialized field that is set to an empty string
fixes #9835
This commit is contained in:
parent
e9c2214837
commit
f732ec3cb9
|
@ -604,8 +604,12 @@ bool IndexerExpression::GetReference(ScriptFrame& frame, bool init_dict, Value *
|
|||
psdhint = *dhint;
|
||||
|
||||
if (m_Operand1->GetReference(frame, init_dict, &vparent, &vindex, &psdhint)) {
|
||||
if (init_dict && VMOps::GetField(vparent, vindex, m_Operand1->GetDebugInfo()).IsEmpty())
|
||||
VMOps::SetField(vparent, vindex, new Dictionary(), m_Operand1->GetDebugInfo());
|
||||
if (init_dict) {
|
||||
Value old_value = VMOps::GetField(vparent, vindex, m_Operand1->GetDebugInfo());
|
||||
|
||||
if (old_value.IsEmpty() && !old_value.IsString())
|
||||
VMOps::SetField(vparent, vindex, new Dictionary(), m_Operand1->GetDebugInfo());
|
||||
}
|
||||
|
||||
*parent = VMOps::GetField(vparent, vindex, m_DebugInfo);
|
||||
free_psd = true;
|
||||
|
|
Loading…
Reference in New Issue