diff --git a/change_log.txt b/change_log.txt index f4724b18aa..8e2304528c 100644 --- a/change_log.txt +++ b/change_log.txt @@ -9,6 +9,9 @@ email address. ================================================================================ +eeschema Solved: eeschema crashes when create a new sheet, using the default filename and enter it. + Solved: eeschema crashes when delete a sheet label (pin sheet), undo this and move the label. + (bad value (not updated) for the DrawSheetLabelStruct.m_Parent member after redo command in sheet edit). + +all: Added comments in gestfich.cpp to explain the default paths used by kicad to find help files and lib files diff --git a/eeschema/class_drawsheet.cpp b/eeschema/class_drawsheet.cpp index 8f8d131e75..41ee01f32f 100644 --- a/eeschema/class_drawsheet.cpp +++ b/eeschema/class_drawsheet.cpp @@ -105,7 +105,7 @@ DrawSheetStruct* DrawSheetStruct::GenCopy() { Slabel = newitem->m_Label = label->GenCopy(); Slabel->m_Parent = newitem; - label = (DrawSheetLabelStruct*) label->Pnext; + label = label->Next(); } while( label ) @@ -113,7 +113,7 @@ DrawSheetStruct* DrawSheetStruct::GenCopy() Slabel->Pnext = label->GenCopy(); Slabel = (DrawSheetLabelStruct*) Slabel->Pnext; Slabel->m_Parent = newitem; - label = (DrawSheetLabelStruct*) label->Pnext; + label = label->Next(); } /* don't copy screen data - just reference it. */ @@ -140,6 +140,21 @@ void DrawSheetStruct::SwapData( DrawSheetStruct* copyitem ) EXCHG( m_FileNameSize, copyitem->m_FileNameSize ); EXCHG( m_Label, copyitem->m_Label ); EXCHG( m_NbLabel, copyitem->m_NbLabel ); + + // Ensure sheet labels have their .m_Parent member poiuntin really on their parent, after swapping. + DrawSheetLabelStruct * label = m_Label; + while( label ) + { + label->m_Parent = this; + label = label->Next(); + } + label = copyitem->m_Label; + while( label ) + { + label->m_Parent = copyitem; + label = label->Next(); + } + }