From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 106770 invoked by alias); 29 Oct 2017 17:24:37 -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 106650 invoked by uid 89); 29 Oct 2017 17:24:26 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.5 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.2 spammy=H*RU:sk:compute, H*r:sk:compute, Hx-spam-relays-external:sk:compute, Hx-spam-relays-external:ESMTPA X-HELO: out4-smtp.messagingengine.com Received: from out4-smtp.messagingengine.com (HELO out4-smtp.messagingengine.com) (66.111.4.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 29 Oct 2017 17:24:14 +0000 Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 413D82094D for ; Sun, 29 Oct 2017 13:24:11 -0400 (EDT) Received: from frontend1 ([10.202.2.160]) by compute6.internal (MEProxy); Sun, 29 Oct 2017 13:24:11 -0400 X-ME-Sender: Received: from [192.168.1.102] (host86-179-113-201.range86-179.btcentralplus.com [86.179.113.201]) by mail.messagingengine.com (Postfix) with ESMTPA id D746D7F9CF for ; Sun, 29 Oct 2017 13:24:10 -0400 (EDT) Subject: Re: [[PATCH setup topic/libsolv] 1/2] packagedb::removeEmptyCategories: Don't remove "Base" To: cygwin-apps@cygwin.com References: <20171028122932.3024-1-kbrown@cornell.edu> From: Jon Turney Message-ID: Date: Sun, 29 Oct 2017 17:24:00 -0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <20171028122932.3024-1-kbrown@cornell.edu> Content-Type: multipart/mixed; boundary="------------5314AF09CB8013A9F723C992" X-SW-Source: 2017-10/txt/msg00162.txt.bz2 This is a multi-part message in MIME format. --------------5314AF09CB8013A9F723C992 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-length: 1244 On 28/10/2017 13:29, Ken Brown wrote: > This can be empty if no setup.ini files are found. Removing it causes > setup to hang. > --- > package_db.cc | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/package_db.cc b/package_db.cc > index ac9387c..b104073 100644 > --- a/package_db.cc > +++ b/package_db.cc > @@ -596,7 +596,7 @@ packagedb::removeEmptyCategories() > { > for (packagedb::categoriesType::iterator n = packagedb::categories.begin(); > n != packagedb::categories.end(); ++n) > - if (!n->second.size()) > + if (!n->second.size() && n->first != "Base") > { > Log (LOG_BABBLE) << "Removing empty category " << n->first << endLog; > packagedb::categories.erase (n++); > Hmm... now I remember my other concerns about this piece of code: as written, it's just wrong. 1. Applying erase to packagedb:categories invalidates the iterator 2. We're incrementing the iterator after doing an erase, so even if the iterator was still valid, we skip checking if the following category is empty So maybe the right way to fix this is as attached: I need to stare as this a bit more to understand where the 'base' category is coming from when we have no setup.ini... --------------5314AF09CB8013A9F723C992 Content-Type: text/plain; charset=UTF-8; name="0001-Fix-invalid-iterator-use-in-packagedb-removeEmptyCat.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-Fix-invalid-iterator-use-in-packagedb-removeEmptyCat.pa"; filename*1="tch" Content-length: 1765 RnJvbSBkYjEwMjhjMmVjMTlmZDg0MzY2NjYzYjEzODQ4ODhkZDMzMjQxMjAy IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gVHVybmV5IDxq b24udHVybmV5QGRyb25lY29kZS5vcmcudWs+CkRhdGU6IFN1biwgMjkgT2N0 IDIwMTcgMTc6MjA6NTEgKzAwMDAKU3ViamVjdDogW1BBVENIIHNldHVwXSBG aXggaW52YWxpZCBpdGVyYXRvciB1c2UgaW4KIHBhY2thZ2VkYjo6cmVtb3Zl RW1wdHlDYXRlZ29yaWVzKCkKCi0tLQogcGFja2FnZV9kYi5jYyB8IDEzICsr KysrKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3BhY2thZ2VfZGIuY2Mg Yi9wYWNrYWdlX2RiLmNjCmluZGV4IDRkMmVmNGQuLjlkZTA4NzUgMTAwNjQ0 Ci0tLSBhL3BhY2thZ2VfZGIuY2MKKysrIGIvcGFja2FnZV9kYi5jYwpAQCAt NTkzLDEzICs1OTMsMjIgQEAgcGFja2FnZWRiOjpkZWZhdWx0VHJ1c3QgKFNv bHZlclRhc2tzICZxLCBTb2x2ZXJTb2x1dGlvbjo6dXBkYXRlTW9kZSBtb2Rl LCBib29sIHQKIHZvaWQKIHBhY2thZ2VkYjo6cmVtb3ZlRW1wdHlDYXRlZ29y aWVzKCkKIHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGVtcHR5Owor CiAgIGZvciAocGFja2FnZWRiOjpjYXRlZ29yaWVzVHlwZTo6aXRlcmF0b3Ig biA9IHBhY2thZ2VkYjo6Y2F0ZWdvcmllcy5iZWdpbigpOwogICAgICAgIG4g IT0gcGFja2FnZWRiOjpjYXRlZ29yaWVzLmVuZCgpOyArK24pCiAgICAgaWYg KCFuLT5zZWNvbmQuc2l6ZSgpKQogICAgICAgewotICAgICAgICBMb2cgKExP R19CQUJCTEUpIDw8ICJSZW1vdmluZyBlbXB0eSBjYXRlZ29yeSAiIDw8IG4t PmZpcnN0IDw8IGVuZExvZzsKLSAgICAgICAgcGFja2FnZWRiOjpjYXRlZ29y aWVzLmVyYXNlIChuKyspOworICAgICAgICBlbXB0eS5wdXNoX2JhY2sobi0+ Zmlyc3QpOwogICAgICAgfQorCisgIGZvciAodW5zaWduZWQgaW50IGkgPSAw OyBpIDwgZW1wdHkuc2l6ZSgpOyArK2kpCisgICAgeworICAgICAgcGFja2Fn ZWRiOjpjYXRlZ29yaWVzVHlwZTo6aXRlcmF0b3IgbiA9IHBhY2thZ2VkYjo6 Y2F0ZWdvcmllcy5maW5kKGVtcHR5W2ldKTsKKyAgICAgIExvZyAoTE9HX0JB QkJMRSkgPDwgIlJlbW92aW5nIGVtcHR5IGNhdGVnb3J5ICIgPDwgZW1wdHlb aV0gPDwgZW5kTG9nOworICAgICAgaWYgKG4gIT0gcGFja2FnZWRiOjpjYXRl Z29yaWVzLmVuZCgpKQorICAgICAgICBwYWNrYWdlZGI6OmNhdGVnb3JpZXMu ZXJhc2Uobik7CisgICAgfQogfQogCiB2b2lkCi0tIAoyLjE0LjMKCg== --------------5314AF09CB8013A9F723C992--