← Back to team overview

kicad-developers team mailing list archive

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