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
8d11b744f4
commit
a7bfc5ef16
|
@ -632,8 +632,12 @@ bool IndexerExpression::GetReference(ScriptFrame& frame, bool init_dict, Value *
|
||||||
init_dict = false;
|
init_dict = false;
|
||||||
|
|
||||||
if (m_Operand1->GetReference(frame, init_dict, &vparent, &vindex, &psdhint)) {
|
if (m_Operand1->GetReference(frame, init_dict, &vparent, &vindex, &psdhint)) {
|
||||||
if (init_dict && VMOps::GetField(vparent, vindex, m_Operand1->GetDebugInfo()).IsEmpty())
|
if (init_dict) {
|
||||||
VMOps::SetField(vparent, vindex, new Dictionary(), m_Operand1->GetDebugInfo());
|
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);
|
*parent = VMOps::GetField(vparent, vindex, m_DebugInfo);
|
||||||
free_psd = true;
|
free_psd = true;
|
||||||
|
|
Loading…
Reference in New Issue