Fix potential segfaults in VectorVal Insert/Remove methods

The existence/hole check for managed types was needed to prevent
accessing a nil-optional value.
This commit is contained in:
Jon Siwek 2021-04-19 19:29:37 -07:00
parent 819fc1aac0
commit fd5cdbbe50
3 changed files with 22 additions and 2 deletions

View file

@ -3390,7 +3390,10 @@ bool VectorVal::Insert(unsigned int index, ValPtr element)
types_it = std::next(yield_types->begin(), index);
}
else if ( managed_yield )
ZVal::DeleteManagedType(**it);
{
if ( *it )
ZVal::DeleteManagedType(**it);
}
}
else
{
@ -3446,7 +3449,10 @@ bool VectorVal::Remove(unsigned int index)
}
else if ( managed_yield )
ZVal::DeleteManagedType(**it);
{
if ( *it )
ZVal::DeleteManagedType(**it);
}
vector_val->erase(it);