On Friday 01 March 2002 12:21 pm, Edwin Leuven wrote:
> I am trying to make the qt2 frontend compile and added a method running() 
in 
> qt2/Timeout_pimpl
> 
> there are two issues
> 
> 1. Everything compiles but the dialogs are all xforms!
> 2. Starting and closing lyx makes it crash:
> 
> #0  0x0820f505 in Timeout::~Timeout (this=0x84710ec, __in_chrg=2)
>     at Timeout.C:31
> #1  0x082e190f in BufferView::Pimpl::~Pimpl (this=0x8471164, __in_chrg=3)
>     at /usr/include/g++-3/stl_vector.h:266
> #2  0x0805149f in BufferView::~BufferView (this=0x8471018, __in_chrg=3)
>     at BufferView.C:34
> #3  0x080873df in LyXView::~LyXView (this=0x84550c8, __in_chrg=0)
>     at LyXView.C:73
> #4  0x0809c61e in XFormsView::~XFormsView (this=0x84550c8, __in_chrg=3)
>     at XFormsView.C:71
> #5  0x080eb517 in LyXGUI::~LyXGUI (this=0x8428c68, __in_chrg=3)
>     at lyx_gui.C:174
> #6  0x080ecf7b in LyX::~LyX (this=0xbffff770, __in_chrg=2)
>     at ../boost/boost/utility.hpp:44
> #7  0x08131864 in main (argc=1, argv=0xbffff834) at ../src/main.C:39
> #8  0x4026a627 in __libc_start_main (main=0x81316fc <main>, argc=1,
>     ubp_av=0xbffff834, init=0x804f74c <_init>, fini=0x8376800 <_fini>,
>     rtld_fini=0x4000dcc4 <_dl_fini>, stack_end=0xbffff82c)
>     at ../sysdeps/generic/libc-start.c:129
> 
> anyone?

Try touching all the .C files in the frontends dir (only 4 or 5 files). It's 
possible that they think that their pimpl_s are qt2 ones, whilst your 
executable contains xforms ones. Why it has linked as it has is another 
matter about which I cannot comment.

Incidentally, I think that this pimpl_ idiom is invalid in this case. I have 
a patch for Timeout.C that gives it a pointer to an abstract base class for 
it's interaction with the gui library. The Timeout c-tor is stored in the gui 
forntend, (like the Dialogs c-tor).

This way, we never have to worry about such issues.

Angus

Reply via email to