Dear Evgueni, On Fri, Feb 5, 2010 at 11:21 AM, Evgueni Kolossov <ekolos...@gmail.com> wrote: > Dear Greg, > > Thank you very much for quick answer. > I think the problem is in the copying from one vector to another: > for (unsigned int i=9; i < m_vF.size(); i++) > vNew.push_back(m_vF[i]); > > Can this corrupt the content of new vector?
The boost smart pointers can be copied without problems, so this shouldn't cause any corruption. Building on the small example I was doing before, the following works without problems: { RWMol *m=new RWMol(); m->addAtom(new Atom(6)); m->addAtom(new Atom(6)); m->addBond(0,1,Bond::SINGLE); ROMOL_SPTR msp((ROMol *)m); RDKit::MOL_SPTR_VECT m_vF; m_vF.push_back(msp); ROMol *nm = new ROMol(*m_vF[0]); m_vF.push_back(ROMOL_SPTR(nm)); RDKit::MOL_SPTR_VECT m_vF2; m_vF2.resize(m_vF.size()); std::copy(m_vF.begin(),m_vF.end(),m_vF2.begin()); std::cerr<<m_vF2[0]->getNumAtoms()<<std::endl; } The original error you saw, from here: > T * operator-> () const > { > BOOST_ASSERT(px != 0); > return px; > } is triggered when you try to dereference a smart pointer that has a null pointer as its contents. I'd suggest being sure that your original vector doesn't have any empty elements (cases where the molecule was a null pointer). -greg ------------------------------------------------------------------------------ The Planet: dedicated and managed hosting, cloud storage, colocation Stay online with enterprise data centers and the best network in the business Choose flexible plans and management services without long-term contracts Personal 24x7 support from experience hosting pros just a phone call away. http://p.sf.net/sfu/theplanet-com _______________________________________________ Rdkit-discuss mailing list Rdkit-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rdkit-discuss