GSoC '21 KMyMoney : I am stuck.
Thomas Baumgart
thb at net-bembel.de
Wed Jun 23 21:13:52 BST 2021
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 --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 868 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-finance-apps/attachments/20210623/66c75f58/attachment.sig>
More information about the Kde-finance-apps
mailing list