Peter Kümmel wrote: > Bennett Helm wrote: >> Recipe for another crash (1.5 on Mac). >> >> Create a document with a bibliography that specifies two .bib files. >> Select View > View Source, and check the "Display complete source" >> option. Back in the main LyX window, start typing text in a standard >> paragraph. After a few keystrokes, LyX crashes. >> >> As you begin typing, looking at the LaTeX Source window reveals that the >> names of the files listed in \Bibliography change as you type. >> >> Here's the backtrace. >> >> Bennett >> > > Similar here on Windows: > > 1. new document > 2. insert List/TOC->Bibtex Bilio > 3. add a biblio > 4. view source ->crash >
This fixes the crash here: Index: insets/insetbibtex.C =================================================================== --- insets/insetbibtex.C (revision 15916) +++ insets/insetbibtex.C (working copy) @@ -155,7 +155,8 @@ typedef boost::tokenizer<Separator> Tokenizer; Separator const separator(","); - Tokenizer const tokens(to_utf8(getParam("bibfiles")), separator); + const string param(to_utf8(getParam("bibfiles"))); + Tokenizer const tokens(param, separator); Tokenizer::const_iterator const begin = tokens.begin(); Tokenizer::const_iterator const end = tokens.end(); But why is it needed? Why is the string deconstructed while passed as parameter? std::string const to_utf8(docstring const & ucs4) { std::vector<char> const utf8 = ucs4_to_utf8(ucs4.data(), ucs4.size()); return std::string(utf8.begin(), utf8.end()); } Isn't this deep copying? There could be hundreds of such constructs in LyX. This is really a ugly bug. Peter >> Starting program: /Applications/LyX-150.app/Contents/MacOS/lyx >> splash screen requested >> show banner: 1 >> LyXComm: Pipe /Users/bennett/Library/Application >> Support/LyX-1.4/.lyxpipe.in already exists. >> If no other LyX program is active, please delete the pipe by hand and >> try again. >> terminate called after throwing an instance of >> 'boost::filesystem::basic_filesystem_error<boost::filesystem::basic_path<std::string, >> boost::filesystem::path_traits> >' >> what(): boost::filesystem::exists >> >> Program received signal SIGABRT, Aborted. >> 0x9003d1dc in kill () >> (gdb) bt >> #0 0x9003d1dc in kill () >> #1 0x9010f2af in raise () >> #2 0x9010de02 in abort () >> #3 0x90b4039c in __gnu_cxx::__verbose_terminate_handler () >> #4 0x90b3e602 in __gxx_personality_v0 () >> #5 0x90b3e640 in std::terminate () >> #6 0x90b3e754 in __cxa_throw () >> #7 0x00653f26 in >> boost::throw_exception<boost::filesystem::basic_filesystem_error<boost::filesystem::basic_path<std::string, >> boost::filesystem::path_traits> > > ([EMAIL PROTECTED]) at >> ../boost/boost/throw_exception.hpp:39 >> #8 0x006563d1 in >> boost::filesystem::exists<boost::filesystem::basic_path<std::string, >> boost::filesystem::path_traits> > ([EMAIL PROTECTED]) at >> ../boost/boost/filesystem/operations.hpp:281 >> #9 0x000fab9c in lyx::support::isFileReadable ([EMAIL PROTECTED]) at >> ../../boost/boost/filesystem/operations.hpp:600 >> #10 0x000f48e3 in lyx::(anonymous namespace)::normalize_name >> ([EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], >> [EMAIL PROTECTED]) at insetbibtex.C:120 >> #11 0x000f5dbe in lyx::InsetBibtex::latex (this=0x1e8bcca0, >> [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED]) at >> insetbibtex.C:166 >> #12 0x000b65f7 in lyx::Paragraph::Pimpl::simpleTeXSpecialChars >> (this=0x1e8bf310, [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], >> [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], >> [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], >> [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], >> [EMAIL PROTECTED], [EMAIL PROTECTED], c=2097153) at paragraph_pimpl.C:519 >> #13 0x000b32d5 in lyx::Paragraph::simpleTeXOnePar (this=0x1e8c96a8, >> [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], >> [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED]) at >> paragraph.C:1029 >> #14 0x000a85db in lyx::(anonymous namespace)::TeXOnePar >> ([EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], >> [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], >> [EMAIL PROTECTED]) at output_latex.C:373 >> #15 0x000ab3ee in lyx::latexParagraphs ([EMAIL PROTECTED], >> [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], >> [EMAIL PROTECTED], [EMAIL PROTECTED]) at output_latex.C:618 >> #16 0x00030f0c in lyx::Buffer::writeLaTeXSource (this=0x1e884bd0, >> [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], >> output_preamble=true, output_body=true) at buffer.C:970 >> #17 0x00033f2a in lyx::Buffer::getSourceCode (this=0x1e884bd0, >> [EMAIL PROTECTED], par_begin=1, par_end=2, full_source=1) at buffer.C:1668 >> #18 0x00372b14 in lyx::frontend::ControlViewSource::updateContent >> (this=0x1e82bc00, fullSource=true) at ControlViewSource.C:56 >> #19 0x0035f49f in lyx::frontend::QViewSource::update_source >> (this=0x1f1019d0) at QViewSource.C:107 >> #20 0x0035f5ea in lyx::frontend::QViewSource::update_contents >> (this=0x1f1019d0) at QViewSource.C:115 >> #21 0x0089350e in >> lyx::frontend::QView<lyx::frontend::QViewSourceDialog>::update >> (this=0x1f1019d0) at QDialogView.h:132 >> #22 0x0016f4ed in lyx::Dialogs::checkStatus (this=0x12965d20) at >> Dialogs.C:248 >> #23 0x00164b3f in lyx::LyXView::updateToolbars (this=0x12965124) at >> LyXView.C:304 >> #24 0x0008702d in lyx::LyXFunc::dispatch (this=0x12917ac0, >> [EMAIL PROTECTED]) at lyxfunc.C:1742 >> #25 0x00088126 in lyx::LyXFunc::processKeySym (this=0x12917ac0, >> [EMAIL PROTECTED], state=none) at lyxfunc.C:336 >> #26 0x001d1bb9 in lyx::frontend::WorkArea::processKeySym >> (this=0x129663e4, [EMAIL PROTECTED], state=none) at WorkArea.C:175 >> #27 0x003250cd in lyx::frontend::GuiWorkArea::keyPressEvent >> (this=0x129663d0, e=0xbfffecdc) at GuiWorkArea.C:443 >> #28 0x0020a296 in QWidget::event () at QLImage.C:172 >> #29 0x0025f1e8 in QFrame::event () at Dialogs.C:320 >> #30 0x00246d8f in QAbstractScrollArea::event () at Dialogs.C:320 >> #31 0x00181fb4 in QApplicationPrivate::notify_helper () at >> insetspecialchar.C:65 >> #32 0x001881b2 in QApplication::notify () at insetspecialchar.C:65 >> #33 0x001e1a74 in qt_sendSpontaneousEvent () at forkedcontr.C:223 >> #34 0x002ee82a in QKeyMapper::sendKeyEvent () at InsetMathString.C:33 >> #35 0x002efd12 in QKeyMapperPrivate::translateKeyEvent () at >> InsetMathString.C:33 >> #36 0x001e44d6 in QApplicationPrivate::globalEventProcessor () at >> forkedcontr.C:223 >> #37 0x92dc686b in DispatchEventToHandlers () >> #38 0x92dc5f10 in SendEventToEventTargetInternal () >> #39 0x92dc5dd5 in SendEventToEventTargetWithOptions () >> #40 0x92dcd858 in ToolboxEventDispatcherHandler () >> #41 0x92dc6c22 in DispatchEventToHandlers () >> #42 0x92dc5f10 in SendEventToEventTargetInternal () >> #43 0x92dcd1f0 in SendEventToEventTarget () >> #44 0x001dcca0 in qt_mac_send_event () at forkedcontr.C:223 >> #45 0x002f7578 in QEventDispatcherMac::processEvents () at >> InsetMathString.C:33 >> #46 0x0031242e in QEventLoop::processEvents () at InsetMathString.C:33 >> #47 0x0031260c in QEventLoop::exec () at InsetMathString.C:33 >> #48 0x001e995b in QCoreApplication::exec () at forkedcontr.C:223 >> #49 0x00074d5a in lyx::LyX::priv_exec (this=0x12917ab0, >> [EMAIL PROTECTED], argv=0xbffff9ec) at lyx_main.C:350 >> #50 0x00074eb6 in lyx::LyX::exec ([EMAIL PROTECTED], argv=0xbffff9ec) at >> lyx_main.C:171 >> #51 0x00002b1d in main (argc=1, argv=0xbffff9ec) at main.C:46 >> >> > > -- Peter Kümmel