kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #03273
Re: Re: Regression in eeschema
Lorenzo wrote:
>
>
>> This is just a preliminary analysis skimming the source, if someone has comments or suggestions on how to proceed it could be useful.
>
> Quick update: logging in RebuildEndList shown that pins are not being added to the list... in particular in this fragment (about line 400):
>
> Entry = CMP_LIBRARY::FindLibraryComponent( STRUCT->m_ChipName );
>
> if( Entry == NULL)
> break;
> wxLogDebug(wxT("Item %p has pins?"), DrawItem);
> for( LibDrawPin* Pin = Entry->GetNextPin(); Pin != NULL;
> Pin = Entry->GetNextPin( Pin ) ) {
> wxLogDebug(wxT("Item %p has a pin"), DrawItem);
> wxASSERT( Pin->Type() == COMPONENT_PIN_DRAW_TYPE );
> /* Loop body */
>
> ... I can see the 'has pins?' message (so there is the Entry) but NO 'has a pin' ones; GetNextPin() seems to be the culprit. That would explain why even the netlist is broken (a grep shows that function actually being used only in pinedit (massively) and in the locate/netlist related functions).
>
> GetNextPin is actually a wrapper for GetNextDrawItem... THAT uses a STL/BOOST container (m_Drawing). Now I'm too hungry to get how it works, anyway:D
It looks like I'm the culprit. The problem is that the draw items are
no longer linked using the base class EDA_BaseStruct but now use the
Boost ptr_vector container. I was sure I removed all of the old
behavior but a may have missed it somewhere. Let me take a quick look
at this a see if I can figure out whats wrong.
Wayne
Follow ups
References