Fixed #466 (Segfault when accessing a wrong layer tab)

This commit is contained in:
Matthias Koefferlein 2020-01-04 12:33:14 +01:00
parent 85c033db64
commit 09f97aa286
2 changed files with 17 additions and 0 deletions

View File

@ -1935,6 +1935,10 @@ LayoutView::expand_properties (unsigned int index, const std::map<int, int> &map
void
LayoutView::replace_layer_node (unsigned int index, const LayerPropertiesConstIterator &iter, const LayerPropertiesNode &node)
{
if (index >= layer_lists ()) {
return;
}
// if the source specification changed, a redraw is required
if (*iter != node) {
@ -1968,6 +1972,10 @@ LayoutView::replace_layer_node (unsigned int index, const LayerPropertiesConstIt
void
LayoutView::set_properties (unsigned int index, const LayerPropertiesConstIterator &iter, const LayerProperties &props)
{
if (index >= layer_lists ()) {
return;
}
// if the source specification changed, a redraw is required
const LayerProperties &l = *iter;
if (l != props) {
@ -2007,6 +2015,8 @@ LayoutView::set_properties (unsigned int index, const LayerPropertiesConstIterat
const LayerPropertiesNode &
LayoutView::insert_layer (unsigned int index, const LayerPropertiesConstIterator &before, const LayerPropertiesNode &node)
{
tl_assert (index < layer_lists ());
if (transacting ()) {
manager ()->queue (this, new OpInsertLayerProps (index, (unsigned int) before.uint (), node));
} else if (manager () && ! replaying ()) {
@ -2032,6 +2042,10 @@ LayoutView::insert_layer (unsigned int index, const LayerPropertiesConstIterator
void
LayoutView::delete_layer (unsigned int index, LayerPropertiesConstIterator &iter)
{
if (index >= layer_lists ()) {
return;
}
lay::LayerPropertiesNode orig = *iter;
if (mp_control_panel && index == current_layer_list ()) {

View File

@ -397,6 +397,9 @@ class LAYLayoutView_TestClass < TestBase
lp.fill_color = 0xffff31cc
assert_equal(lv.begin_layers.current.fill_color, 0xffff31cc)
# should not segfault
lv.insert_layer(42, lv.begin_layers(42))
end
end