[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