From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 126838 invoked by alias); 7 Nov 2017 18:17:53 -0000 Mailing-List: contact cygwin-apps-help@cygwin.com; run by ezmlm Precedence: bulk Sender: cygwin-apps-owner@cygwin.com List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Mail-Followup-To: cygwin-apps@cygwin.com Received: (qmail 126762 invoked by uid 89); 7 Nov 2017 18:17:52 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.1 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.2 spammy=22914 X-HELO: rgout02.bt.lon5.cpcloud.co.uk Received: from rgout02.bt.lon5.cpcloud.co.uk (HELO rgout02.bt.lon5.cpcloud.co.uk) (65.20.0.179) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 07 Nov 2017 18:17:51 +0000 X-OWM-Source-IP: 86.162.230.154 (GB) X-OWM-Env-Sender: jonturney@btinternet.com X-Junkmail-Premium-Raw: score=7/50,refid=2.7.2:2017.11.7.174516:17:7.944,ip=,rules=__HAS_FROM, __TO_MALFORMED_2, __TO_NO_NAME, __HAS_CC_HDR, __CC_NAME, __CC_NAME_DIFF_FROM_ACC, __SUBJ_ALPHA_END, __HAS_MSGID, __SANE_MSGID, __HAS_X_MAILER, __IN_REP_TO, __REFERENCES, __FROM_DOMAIN_IN_ANY_CC1, __NO_HTML_TAG_RAW, BODY_SIZE_1500_1599, BODYTEXTP_SIZE_3000_LESS, __MIME_TEXT_P1, __MIME_TEXT_ONLY, HTML_00_01, HTML_00_10, BODY_SIZE_5000_LESS, IN_REP_TO, MSG_THREAD, __FROM_DOMAIN_IN_RCPT, __CC_REAL_NAMES, MULTIPLE_REAL_RCPTS, LEGITIMATE_SIGNS, NO_URI_FOUND, NO_CTA_URI_FOUND, BODY_SIZE_2000_LESS, __MIME_TEXT_P, REFERENCES, NO_URI_HTTPS, BODY_SIZE_7000_LESS Received: from localhost.localdomain (86.162.230.154) by rgout02.bt.lon5.cpcloud.co.uk (9.0.019.13-1) (authenticated as jonturney@btinternet.com) id 59D91D94034C7AC4; Tue, 7 Nov 2017 18:17:49 +0000 From: Jon Turney To: cygwin-apps@cygwin.com Cc: Jon Turney Subject: [PATCH setup 5/5] More crash avoidance in SolvableVersion member functions Date: Tue, 07 Nov 2017 18:17:00 -0000 Message-Id: <20171107181703.51016-5-jon.turney@dronecode.org.uk> In-Reply-To: <20171107181703.51016-1-jon.turney@dronecode.org.uk> References: <20171107181703.51016-1-jon.turney@dronecode.org.uk> X-SW-Source: 2017-11/txt/msg00024.txt.bz2 The following call-stack means we end up calling SolvableVersion methods before packagedb::prep(), i.e. before attributes have been internalized, so their values aren't available. PickView::init_headers PickView::refresh PickView::init ChooserPage::createListview ChooserPage::OnInit We call PickView::refresh again after we've computed the initial solution, so the columns always end up with the correct width. --- libsolv.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libsolv.cc b/libsolv.cc index 29a26a9..41b42eb 100644 --- a/libsolv.cc +++ b/libsolv.cc @@ -172,6 +172,10 @@ SolvableVersion::SDesc () const return ""; Solvable *solvable = pool_id2solvable(pool, id); const char *sdesc = repo_lookup_str(solvable->repo, id, SOLVABLE_SUMMARY); + + if (!sdesc) + return ""; + return sdesc; } @@ -225,14 +229,14 @@ SolvableVersion::fixup_spkg_id (SolvableVersion spkg_id) const packagesource * SolvableVersion::source() const { + static packagesource empty_source = packagesource(); if (!id) { - static packagesource empty_source = packagesource(); return &empty_source; } Solvable *solvable = pool_id2solvable(pool, id); Id psrc_attr = pool_str2id(pool, "solvable:packagesource", 1); - return (packagesource *)repo_lookup_num(solvable->repo, id, psrc_attr, 0); + return (packagesource *)repo_lookup_num(solvable->repo, id, psrc_attr, (unsigned long long)&empty_source); } bool -- 2.15.0