<div dir="ltr"><div><div>Hello,<br></div>I think I have fixed the crash bug. Thank you very much for the help. I did the changes in kmymoney repo only and I have pushed those changes to <a href="https://invent.kde.org/surajsloth/kmymoney/-/tree/gsoc21">https://invent.kde.org/surajsloth/kmymoney/-/tree/gsoc21</a> . I have pushed the changes. Although the new quote button is disabled. That is needed to be figured out.<br><br></div>My forked changes(gsoc21 branch) can be merged into gsoc21 branch of the upstream repo. This way I am dealing with a forked repo also and my entire work is there is a separate branch of upstream repo. What do you think about this?<br><br><div><span>Regards<font color="#888888"><br></font></span></div><font color="#888888"><div><span>Suraj Kumar Mahto</span></div></font></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jun 24, 2021 at 1:44 AM Thomas Baumgart <<a href="mailto:thb@net-bembel.de">thb@net-bembel.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Mittwoch, 23. Juni 2021 21:59:29 CEST Suraj Kumar Mahto wrote:<br>
<br>
> > Yes, the problem is, that the profile argument to the AlkOnlineQuoteSource<br>
> > ctor is a nullptr. This is then used and the crash happens. The cause to<br>
> > this is, that in AlkOnlineQuotesWidget::Private::slotNewEntry() the<br>
> > m_profile member is not initialized (nullptr). An assignment happens in<br>
> > AlkOnlineQuotesWidget::Private::loadProfiles() and<br>
> > AlkOnlineQuotesWidget::Private::slotLoadProfile() but the list of profiles<br>
> > in your case seems to be empty, and thus no profile is assigned.<br>
> <br>
> > See MainWindow::MainWindow in onlinequoteseditor.cpp which is part of<br>
> alkimia<br>
> > how to load an initial profile which you should do if the list is empty.<br>
> <br>
> In alkonlinequoteswidget.cpp (loadProfile() and slotLoadProfile())- I added<br>
> such in case for an empty list, taken from<br>
> tools/onlinequoteseditor/mainwindow.cpp (I guess you were referring that<br>
> instead of onlinequoteseditor.cpp)<br>
>     if (list.isEmpty()){<br>
>         AlkOnlineQuotesProfileManager &manager =<br>
> AlkOnlineQuotesProfileManager::instance();<br>
> <br>
>         manager.addProfile(new AlkOnlineQuotesProfile("no-config-file",<br>
> AlkOnlineQuotesProfile::Type::None));<br>
>         #if QT_VERSION < QT_VERSION_CHECK(5,0,0)<br>
>             manager.addProfile(new AlkOnlineQuotesProfile("alkimia4",<br>
> AlkOnlineQuotesProfile::Type::Alkimia4, "alkimia-quotes.knsrc"));<br>
>             manager.addProfile(new AlkOnlineQuotesProfile("skrooge4",<br>
> AlkOnlineQuotesProfile::Type::Skrooge4, "skrooge-quotes.knsrc"));<br>
>             manager.addProfile(new AlkOnlineQuotesProfile("kmymoney4",<br>
> AlkOnlineQuotesProfile::Type::KMyMoney4, "kmymoney-quotes.knsrc"));<br>
>         #else<br>
>             manager.addProfile(new AlkOnlineQuotesProfile("alkimia5",<br>
> AlkOnlineQuotesProfile::Type::Alkimia5, "alkimia-quotes.knsrc"));<br>
>             manager.addProfile(new AlkOnlineQuotesProfile("skrooge5",<br>
> AlkOnlineQuotesProfile::Type::Skrooge5, "skrooge-quotes.knsrc"));<br>
>             manager.addProfile(new AlkOnlineQuotesProfile("kmymoney5",<br>
> AlkOnlineQuotesProfile::Type::KMyMoney5, "kmymoney-quotes.knsrc"));<br>
>         #endif<br>
>         #ifdef ENABLE_FINANCEQUOTE<br>
>             manager.addProfile(new AlkOnlineQuotesProfile("Finance::Quote",<br>
> AlkOnlineQuotesProfile::Type::Script));<br>
>         #endif<br>
> <br>
>         m_profile->manager();<br>
>         return;<br>
>     }<br>
<br>
Yes, this is what you need to do. I think, you could also do it in<br>
the KMyMoney code before the widget is created. I think that does<br>
it too because AlkOnlineQuotesProfileManager is a singleton.<br>
<br>
> Also in order to use my local cloned version of libalkimia in kmymoney<br>
> rather than the installed one in /usr/ . I just imported that in<br>
> ksettingskmymoney.cpp as<br>
> #include </path/to/local/cloned/libalkimia/alkonlinequoteswidget.h> Am I<br>
> doing this right? Because I am still getting the crash :(<br>
<br>
Yes, because you only use your header but link against the library installed<br>
in the system. You can verify that with the following commands:<br>
<br>
 $ cd your-build-directory<br>
 $ cd bin<br>
 $ ldd kmymoney | grep alkimia<br>
<br>
Here this shows<br>
<br>
        libalkimia5.so.8 => /usr/lib64/libalkimia5.so.8 (0x00007f5858419000)<br>
<br>
If you want to use a new version of the shared lib, it need to be in<br>
your-build-directory/lib or your-build-directory/bin. You can use a symlink<br>
in one of those to point to the new version in your alkimia build directory.<br>
<br>
Use the ldd command to verify which library is used.<br>
<br>
Hope that helps.<br>
<br>
<br>
<br>
-- <br>
<br>
Regards<br>
<br>
Thomas Baumgart<br>
<br>
<a href="https://www.signal.org/" rel="noreferrer" target="_blank">https://www.signal.org/</a>       Signal, the better WhatsApp<br>
-------------------------------------------------------------<br>
Testing can only prove the presence of bugs, not their absence.<br>
 -- Edsger W. Dijkstra, 1969<br>
-------------------------------------------------------------<br>
</blockquote></div>