Hi All, After running Reports -> business -> customer report gnucash has a segfault (git master branch c739f4fae442e583389dd8c47100a38a06aac4c4)
I'm interested in helping out with gnucash so looked a bit further. It looks as though the segfault occurs when the get_slot method is run because the book variable is empty. src/libqof/qof/qofbook.cpp 1194 KvpValue* 1195 qof_book_get_option (QofBook *book, GSList *path) 1196 { 1197 KvpFrame *root = qof_instance_get_slots(QOF_INSTANCE (book)); 1198 Path path_v {KVP_OPTION_PATH}; 1199 for (auto item = path; item != nullptr; item = g_slist_next(item)) 1200 path_v.push_back(static_cast<const char*>(item->data)); 1201 return root->get_slot(path_v); 1202 } After looking a bit deeper it seems that SWIG_MustGetPtr (see below) returns null to arg1 (book) which is then passed to qof_book_get_option resulting in qof_instance_get_slots returning null instead of an object and then it segfaults when trying to run get_slots. I thought adding some sort of check on the root variable but that's probably wrong and not solving the underlying problem? I'm not sure where to go from here with regards to fixing the issue. Any pointers would be helpful. Thanks. ./src/engine/swig-engine.c static SCM _wrap_qof_book_get_option (SCM s_0, SCM s_1) { #define FUNC_NAME "qof-book-get-option" QofBook *arg1 = (QofBook *) 0 ; GSList *arg2 = (GSList *) 0 ; SCM gswig_result; SWIGUNUSED int gswig_list_p = 0; KvpValue *result = 0 ; { arg1 = (QofBook *)SWIG_MustGetPtr(s_0, SWIGTYPE_p_QofBook, 1, 0); } arg2 = gnc_scm_to_gslist_string(s_1); result = (KvpValue *)qof_book_get_option(arg1,arg2); gswig_result = gnc_kvp_value_ptr_to_scm(result); return gswig_result; #undef FUNC_NAME _______________________________________________ gnucash-devel mailing list gnucash-devel@gnucash.org https://lists.gnucash.org/mailman/listinfo/gnucash-devel