GSoC '21 KMyMoney : I am stuck.

Suraj Kumar Mahto suraj.mahto49 at gmail.com
Thu Jun 24 23:00:33 BST 2021


Hello,
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
https://invent.kde.org/surajsloth/kmymoney/-/tree/gsoc21 . I have pushed
the changes. Although the new quote button is disabled. That is needed to
be figured out.

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?

Regards
Suraj Kumar Mahto

On Thu, Jun 24, 2021 at 1:44 AM Thomas Baumgart <thb at net-bembel.de> wrote:

> On Mittwoch, 23. Juni 2021 21:59:29 CEST Suraj Kumar Mahto wrote:
>
> > > Yes, the problem is, that the profile argument to the
> AlkOnlineQuoteSource
> > > ctor is a nullptr. This is then used and the crash happens. The cause
> to
> > > this is, that in AlkOnlineQuotesWidget::Private::slotNewEntry() the
> > > m_profile member is not initialized (nullptr). An assignment happens in
> > > AlkOnlineQuotesWidget::Private::loadProfiles() and
> > > AlkOnlineQuotesWidget::Private::slotLoadProfile() but the list of
> profiles
> > > in your case seems to be empty, and thus no profile is assigned.
> >
> > > See MainWindow::MainWindow in onlinequoteseditor.cpp which is part of
> > alkimia
> > > how to load an initial profile which you should do if the list is
> empty.
> >
> > In alkonlinequoteswidget.cpp (loadProfile() and slotLoadProfile())- I
> added
> > such in case for an empty list, taken from
> > tools/onlinequoteseditor/mainwindow.cpp (I guess you were referring that
> > instead of onlinequoteseditor.cpp)
> >     if (list.isEmpty()){
> >         AlkOnlineQuotesProfileManager &manager =
> > AlkOnlineQuotesProfileManager::instance();
> >
> >         manager.addProfile(new AlkOnlineQuotesProfile("no-config-file",
> > AlkOnlineQuotesProfile::Type::None));
> >         #if QT_VERSION < QT_VERSION_CHECK(5,0,0)
> >             manager.addProfile(new AlkOnlineQuotesProfile("alkimia4",
> > AlkOnlineQuotesProfile::Type::Alkimia4, "alkimia-quotes.knsrc"));
> >             manager.addProfile(new AlkOnlineQuotesProfile("skrooge4",
> > AlkOnlineQuotesProfile::Type::Skrooge4, "skrooge-quotes.knsrc"));
> >             manager.addProfile(new AlkOnlineQuotesProfile("kmymoney4",
> > AlkOnlineQuotesProfile::Type::KMyMoney4, "kmymoney-quotes.knsrc"));
> >         #else
> >             manager.addProfile(new AlkOnlineQuotesProfile("alkimia5",
> > AlkOnlineQuotesProfile::Type::Alkimia5, "alkimia-quotes.knsrc"));
> >             manager.addProfile(new AlkOnlineQuotesProfile("skrooge5",
> > AlkOnlineQuotesProfile::Type::Skrooge5, "skrooge-quotes.knsrc"));
> >             manager.addProfile(new AlkOnlineQuotesProfile("kmymoney5",
> > AlkOnlineQuotesProfile::Type::KMyMoney5, "kmymoney-quotes.knsrc"));
> >         #endif
> >         #ifdef ENABLE_FINANCEQUOTE
> >             manager.addProfile(new
> AlkOnlineQuotesProfile("Finance::Quote",
> > AlkOnlineQuotesProfile::Type::Script));
> >         #endif
> >
> >         m_profile->manager();
> >         return;
> >     }
>
> Yes, this is what you need to do. I think, you could also do it in
> the KMyMoney code before the widget is created. I think that does
> it too because AlkOnlineQuotesProfileManager is a singleton.
>
> > Also in order to use my local cloned version of libalkimia in kmymoney
> > rather than the installed one in /usr/ . I just imported that in
> > ksettingskmymoney.cpp as
> > #include </path/to/local/cloned/libalkimia/alkonlinequoteswidget.h> Am I
> > doing this right? Because I am still getting the crash :(
>
> Yes, because you only use your header but link against the library
> installed
> in the system. You can verify that with the following commands:
>
>  $ cd your-build-directory
>  $ cd bin
>  $ ldd kmymoney | grep alkimia
>
> Here this shows
>
>         libalkimia5.so.8 => /usr/lib64/libalkimia5.so.8
> (0x00007f5858419000)
>
> If you want to use a new version of the shared lib, it need to be in
> your-build-directory/lib or your-build-directory/bin. You can use a symlink
> in one of those to point to the new version in your alkimia build
> directory.
>
> Use the ldd command to verify which library is used.
>
> Hope that helps.
>
>
>
> --
>
> Regards
>
> Thomas Baumgart
>
> https://www.signal.org/       Signal, the better WhatsApp
> -------------------------------------------------------------
> Testing can only prove the presence of bugs, not their absence.
>  -- Edsger W. Dijkstra, 1969
> -------------------------------------------------------------
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-finance-apps/attachments/20210625/0f937419/attachment.htm>


More information about the Kde-finance-apps mailing list