diff --git a/src/db/db/dbLayout.cc b/src/db/db/dbLayout.cc index bcd76d706..e4e097c36 100644 --- a/src/db/db/dbLayout.cc +++ b/src/db/db/dbLayout.cc @@ -2872,15 +2872,18 @@ Layout::get_context_info (cell_index_type cell_index, LayoutOrCellContextInfo &i if (pcell_variant) { const db::PCellDeclaration *pcell_decl = ly->pcell_declaration (pcell_variant->pcell_id ()); - - const std::vector &pcp = pcell_decl->parameter_declarations (); - std::vector::const_iterator pd = pcp.begin (); - for (std::vector::const_iterator p = pcell_variant->parameters ().begin (); p != pcell_variant->parameters ().end () && pd != pcp.end (); ++p, ++pd) { - info.pcell_parameters.insert (std::make_pair (pd->get_name (), *p)); + if (pcell_decl) { + const std::vector &pcp = pcell_decl->parameter_declarations (); + std::vector::const_iterator pd = pcp.begin (); + for (std::vector::const_iterator p = pcell_variant->parameters ().begin (); p != pcell_variant->parameters ().end () && pd != pcp.end (); ++p, ++pd) { + info.pcell_parameters.insert (std::make_pair (pd->get_name (), *p)); + } } const db::PCellHeader *header = ly->pcell_header (pcell_variant->pcell_id ()); - info.pcell_name = header->get_name (); + if (header) { + info.pcell_name = header->get_name (); + } } else if (ly != this) { info.cell_name = ly->cell_name (cptr->cell_index ()); diff --git a/src/lay/lay/layMacroEditorDialog.cc b/src/lay/lay/layMacroEditorDialog.cc index 380b50b3d..bad1a9db2 100644 --- a/src/lay/lay/layMacroEditorDialog.cc +++ b/src/lay/lay/layMacroEditorDialog.cc @@ -3468,8 +3468,9 @@ MacroEditorDialog::leave_breakpoint_mode () set_exec_point (0, -1, -1); // refresh UI that might have been spoiled because we filter events - if (lay::MainWindow::instance ()) { - lay::MainWindow::instance ()->update (); + auto tl_widgets = QApplication::topLevelWidgets (); + for (auto w = tl_widgets.begin (); w != tl_widgets.end (); ++w) { + (*w)->update (); } }