Am Mittwoch, den 14.02.2018, 10:11 -0500 schrieb Richard Heck: > > I wonder how that happens. > > LyXCiteEngine const * CiteEnginesList::operator[](string const & str) > const > { > LyXCiteEnginesList::const_iterator it = englist_.begin(); > for (; it != englist_.end(); ++it) > if (it->getID() == str) { > LyXCiteEngine const & eng = *it; > return ŋ > } > return 0; > } > > The crucial point seems to be that we are in a const function, so we > return a null pointer. Boom.
It didn't mean technically. That's clear. I mean how the empty string comes into the LyX file. Any sane LyX 2.3 document should have _some_ cite engine set. > > > Anyway, would be the following more safe (if > > we have an unknown non-empty string)? > > > > return theCiteEnginesList[fromqstr(engine)] > > && theCiteEnginesList[fromqstr(engine)]->getCiteFramework() > > == "biblatex"; > > > > This should also cover the empty case. > > Maybe what would be best is to create and use > CiteEnginesList::hasEngine(const & string). Then add an assertion to > the > function quoted above. This is how things are done in other places. Maybe, but for now, isn't a check whether the pointer is null better than checking just the string emptiness? Jürgen > > Richard > >
signature.asc
Description: This is a digitally signed message part