[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-finance-apps
Subject:    Re: GSoC '21 KMyMoney : I am stuck.
From:       Thomas Baumgart <thb () net-bembel ! de>
Date:       2021-06-23 20:13:52
Message-ID: 1671614.yIU609i1g2 () thb-nb
[Download RAW message or body]


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
-------------------------------------------------------------

["signature.asc" (application/pgp-signature)]

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic