From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Carlos Pita Newsgroups: gmane.emacs.bugs Subject: bug#37755: Logic in init_fringe_bitmap should be moved to backends (maybe rif->define_fringe_bitmap) Date: Wed, 16 Oct 2019 19:07:26 -0300 Message-ID: References: <83a7a2gxp0.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000299c7405950e5496" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="255166"; mail-complaints-to="usenet@blaine.gmane.org" Cc: 37755@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Thu Oct 17 00:09:02 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1iKrTZ-0014En-DO for geb-bug-gnu-emacs@m.gmane.org; Thu, 17 Oct 2019 00:09:01 +0200 Original-Received: from localhost ([::1]:48574 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iKrTY-000404-A2 for geb-bug-gnu-emacs@m.gmane.org; Wed, 16 Oct 2019 18:09:00 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:52510) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iKrSe-0002sd-4Y for bug-gnu-emacs@gnu.org; Wed, 16 Oct 2019 18:08:05 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iKrSc-00055k-9m for bug-gnu-emacs@gnu.org; Wed, 16 Oct 2019 18:08:04 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:37899) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iKrSc-00055e-5t for bug-gnu-emacs@gnu.org; Wed, 16 Oct 2019 18:08:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1iKrSb-0004mB-V4 for bug-gnu-emacs@gnu.org; Wed, 16 Oct 2019 18:08:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Carlos Pita Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 16 Oct 2019 22:08:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 37755 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 37755-submit@debbugs.gnu.org id=B37755.157126366618336 (code B ref 37755); Wed, 16 Oct 2019 22:08:01 +0000 Original-Received: (at 37755) by debbugs.gnu.org; 16 Oct 2019 22:07:46 +0000 Original-Received: from localhost ([127.0.0.1]:46720 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKrSL-0004lf-Jm for submit@debbugs.gnu.org; Wed, 16 Oct 2019 18:07:46 -0400 Original-Received: from mail-yw1-f53.google.com ([209.85.161.53]:34269) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKrSJ-0004lQ-GP for 37755@debbugs.gnu.org; Wed, 16 Oct 2019 18:07:44 -0400 Original-Received: by mail-yw1-f53.google.com with SMTP id d192so158390ywa.1 for <37755@debbugs.gnu.org>; Wed, 16 Oct 2019 15:07:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=9sczC9VGGAzN4ooqubD45pEiETDX1xcIlqDeRfjP1Ns=; b=qEx5h4a13sLVjZIP0QvB7noqHE4VjkXUspTpf+frFdt5XUIHP7vZ7EDNj2FKUaf9JI ZAc2f6R382zASJlmISWEV829jLausnoX1aX7YSpTA0ROMskv4estP06Gj4KyGs7DVspP GsnnqQpTndWuWDemYETlv+N0IDlPr0NwvcDyTPg2Dr+W0j9vAfatMHiMJcrHBZ/BQBIM jy9/kTPeV71ENKSHbJd04AkABeW1I4fz6Z8is/rgUKdi0/k8P7KMM3Xb8at2d7zZhSym nh4e6DSZl6PROfr1/04ipqxIFQgHAEHcg1855ki0NZ0tML0UbmSma1coY1QiWRJl7klS JG/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=9sczC9VGGAzN4ooqubD45pEiETDX1xcIlqDeRfjP1Ns=; b=UzMURiJm2iL9Fs4Vf9BKgdHktyv6lOZOcTUQ22VKW2/yYjmW/VhzohJ63jn0zGWodD 1xwSJrtVYSyyCG/RCb7EZFq8aPqYoTAUVSkTbxl1UK8mSGA9gd9/cPA8dqkyitEtHjXq ctD2fZeAjjKBzFVCXIq9P3pE2tgHH+55QA+OD9vGEvEsehbqyEXZKWjIy7fgeXOOp/OP nRCD0AYnSFgzO7HprOrt0O+EcNsVh/GkUrYb09rBxKKWMxEe6LtY6QbLEXuebw0iRp2Y cK/NbMTuzQRo/u/+YXfwaEzlmdvSiCM5Spo7GPP4vVose8XdrvPOG3rIphU2vyOVZco6 fr4w== X-Gm-Message-State: APjAAAUuegZLHsCJ60foPgQO/lz65zJVRXVycDFgJ5AGwl781/vcpnQS oQwfAZGs3cJffKrQtv3/dsN8JIN2BGROEJEUjmw= X-Google-Smtp-Source: APXvYqzTSCN6bVpGjonFqBMPytnxswkmd+RY3ZIzH+X4j5bSvUVpjbgYhhSGZCvO3efAyC5LmCXb5kTPNez9Q+GrimM= X-Received: by 2002:a81:5088:: with SMTP id e130mr447451ywb.91.1571263657635; Wed, 16 Oct 2019 15:07:37 -0700 (PDT) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:169502 Archived-At: --000000000000299c7405950e5496 Content-Type: text/plain; charset="UTF-8" Ok, I found the bug. The init part was in general iterating along bits by advancing the pointer (i.e. bits++). When I juxtaposed this part to the define part, that also used bits, then bits was pointing to one past the end of the bitmap and not to the bitmap itself, as expected by the define code. Once diagnosed, it was an easy fix. In detail: 1. For Cairo, I followed my own suggestion above of not modifying bits at all. Both the previous init and define loops are now merged into a single loop that directly writes to the surface data, instead of modifying bits. 2. For X11, bits is the only state propagated between init/define and draw and there was no specific define part before my changes, so the new define is simply the old init. Here bits is obviously modified in order to prepare it for the drawing routine. 3. For Win32, I replaced bits++ with bits[i]. Bits is also modified, although here it's easy to avoid that if so desired because it's only locally needed to initialize the platform-specific bitmap structure then used by the drawing routine. 4. For MacOS/NS, there is nothing to be done since there was no specific init part, as I observed a few posts above. I've cursorily tested this patch both alone and merged with my "hidpi fringe" patches and seems to be working fine for the Cairo backend. The new change amounts to yet another code simplification and an overall ~40 reduction in LOCs. Best regards -- Carlos --000000000000299c7405950e5496 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Fringe-refactor-move-platform-specific-code-into-rif.patch" Content-Disposition: attachment; filename="0001-Fringe-refactor-move-platform-specific-code-into-rif.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k1ttsna50 RnJvbSAxNjQyOGQ3ZTMyZmE1MzFhMjI2ZDAyNTc4ZjI3NWM2MzQwZDk4NGU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBtZW1lcGxleCA8Y2FybG9zam9zZXBpdGFAZ21haWwuY29tPgpE YXRlOiBUdWUsIDE1IE9jdCAyMDE5IDE2OjM3OjI0IC0wMzAwClN1YmplY3Q6IFtQQVRDSF0gRnJp bmdlIHJlZmFjdG9yOiBtb3ZlIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgaW50byByaWYKIChCdWcj Mzc3NTUpCgoqIHNyYy9mcmluZ2UuYyAoaW5pdF9mcmluZ2VfYml0bWFwKTogUmVtb3ZlIGl0Lgoq IHNyYy93MzJ0ZXJtLmMgKHczMl9kZWZpbmVfZnJpbmdlX2JpdG1hcCk6IEFkZCBOVEdVSSBpbml0 IHBhcnQuCiogc3JjL3h0ZXJtLmMgKHhfZGVmaW5lX2ZyaW5nZV9iaXRtYXApOiBOZXcgaW50ZXJm YWNlIGZ1bmN0aW9uIGZvciBYMTEsCmFkZCBYV0lORE9XUyBpbml0IHBhcnQuCih4X2NyX2RlZmlu ZV9mcmluZ2VfYml0bWFwKTogQWRkIENBSVJPIGluaXQgcGFydC4KLS0tCiBzcmMvZnJpbmdlLmMg IHwgMTI4ICsrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBzcmMvdzMydGVybS5jIHwgIDE1ICsrKysrLQogc3JjL3h0ZXJtLmMgICB8ICA2MCArKysrKysr KysrKysrKysrKysrKystLQogMyBmaWxlcyBjaGFuZ2VkLCA4MSBpbnNlcnRpb25zKCspLCAxMjIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2ZyaW5nZS5jIGIvc3JjL2ZyaW5nZS5jCmlu ZGV4IDIyZjNiZGMuLmExN2I2ODQgMTAwNjQ0Ci0tLSBhL3NyYy9mcmluZ2UuYworKysgYi9zcmMv ZnJpbmdlLmMKQEAgLTEzODgsMTEyICsxMzg4LDYgQEAgREVGVU4gKCJkZXN0cm95LWZyaW5nZS1i aXRtYXAiLCBGZGVzdHJveV9mcmluZ2VfYml0bWFwLCBTZGVzdHJveV9mcmluZ2VfYml0bWFwLAog ICByZXR1cm4gUW5pbDsKIH0KIAotCi0vKiBJbml0aWFsaXplIGJpdG1hcCBiaXQuCi0KLSAgIE9u IFgsIHdlIGJpdC1zd2FwIHRoZSBidWlsdC1pbiBiaXRtYXBzIGFuZCByZWR1Y2UgYml0bWFwCi0g ICBmcm9tIHNob3J0IHRvIGNoYXIgYXJyYXkgaWYgd2lkdGggaXMgPD0gOCBiaXRzLgotCi0gICBP biBNQUMgd2l0aCBiaWctZW5kaWFuIENQVSwgd2UgbmVlZCB0byBieXRlLXN3YXAgZWFjaCBzaG9y dC4KLQotICAgT24gVzMyIGFuZCBNQUMgKGxpdHRsZSBlbmRpYW4pLCB0aGVyZSdzIG5vIG5lZWQg dG8gZG8gdGhpcy4KLSovCi0KLSNpZiBkZWZpbmVkIChIQVZFX1hfV0lORE9XUykKLXN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIHN3YXBfbmliYmxlWzE2XSA9IHsKLSAgMHgwLCAweDgsIDB4NCwg MHhjLCAgICAgICAgICAgLyogMDAwMCAxMDAwIDAxMDAgMTEwMCAqLwotICAweDIsIDB4YSwgMHg2 LCAweGUsICAgICAgICAgICAvKiAwMDEwIDEwMTAgMDExMCAxMTEwICovCi0gIDB4MSwgMHg5LCAw eDUsIDB4ZCwgICAgICAgICAgIC8qIDAwMDEgMTAwMSAwMTAxIDExMDEgKi8KLSAgMHgzLCAweGIs IDB4NywgMHhmfTsgICAgICAgICAgLyogMDAxMSAxMDExIDAxMTEgMTExMSAqLwotI2VuZGlmICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiBIQVZFX1hfV0lORE9XUyAqLwotCi1zdGF0aWMgdm9p ZAotaW5pdF9mcmluZ2VfYml0bWFwIChpbnQgd2hpY2gsIHN0cnVjdCBmcmluZ2VfYml0bWFwICpm YiwgaW50IG9uY2VfcCkKLXsKLSAgaWYgKG9uY2VfcCB8fCBmYi0+ZHluYW1pYykKLSAgICB7Ci0j aWYgZGVmaW5lZCAoSEFWRV9YX1dJTkRPV1MpCi0gICAgICB1bnNpZ25lZCBzaG9ydCAqYml0cyA9 IGZiLT5iaXRzOwotICAgICAgaW50IGo7Ci0KLSNpZmRlZiBVU0VfQ0FJUk8KLSAgICAgIGZvciAo aiA9IDA7IGogPCBmYi0+aGVpZ2h0OyBqKyspCi0JewotCSAgdW5zaWduZWQgc2hvcnQgYiA9ICpi aXRzOwotI2lmZGVmIFdPUkRTX0JJR0VORElBTgotCSAgKmJpdHMrKyA9IChiIDw8ICgxNiAtIGZi LT53aWR0aCkpOwotI2Vsc2UKLQkgIGIgPSAodW5zaWduZWQgc2hvcnQpKChzd2FwX25pYmJsZVti ICYgMHhmXSA8PCAxMikKLQkJCSAgICAgICB8IChzd2FwX25pYmJsZVsoYj4+NCkgJiAweGZdIDw8 IDgpCi0JCQkgICAgICAgfCAoc3dhcF9uaWJibGVbKGI+PjgpICYgMHhmXSA8PCA0KQotCQkJICAg ICAgIHwgKHN3YXBfbmliYmxlWyhiPj4xMikgJiAweGZdKSk7Ci0JICAqYml0cysrID0gKGIgPj4g KDE2IC0gZmItPndpZHRoKSk7Ci0jZW5kaWYKLQl9Ci0jZWxzZSAgLyogbm90IFVTRV9DQUlSTyAq LwotICAgICAgaWYgKGZiLT53aWR0aCA8PSA4KQotCXsKLQkgIHVuc2lnbmVkIGNoYXIgKmNiaXRz ID0gKHVuc2lnbmVkIGNoYXIgKilmYi0+Yml0czsKLQkgIGZvciAoaiA9IDA7IGogPCBmYi0+aGVp Z2h0OyBqKyspCi0JICAgIHsKLQkgICAgICB1bnNpZ25lZCBzaG9ydCBiID0gKmJpdHMrKzsKLQkg ICAgICB1bnNpZ25lZCBjaGFyIGM7Ci0JICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSgoc3dhcF9u aWJibGVbYiAmIDB4Zl0gPDwgNCkKLQkJCQkgIHwgKHN3YXBfbmliYmxlWyhiPj40KSAmIDB4Zl0p KTsKLQkgICAgICAqY2JpdHMrKyA9IChjID4+ICg4IC0gZmItPndpZHRoKSk7Ci0JICAgIH0KLQl9 Ci0gICAgICBlbHNlCi0JewotCSAgZm9yIChqID0gMDsgaiA8IGZiLT5oZWlnaHQ7IGorKykKLQkg ICAgewotCSAgICAgIHVuc2lnbmVkIHNob3J0IGIgPSAqYml0czsKLQkgICAgICBiID0gKHVuc2ln bmVkIHNob3J0KSgoc3dhcF9uaWJibGVbYiAmIDB4Zl0gPDwgMTIpCi0JCQkJICAgfCAoc3dhcF9u aWJibGVbKGI+PjQpICYgMHhmXSA8PCA4KQotCQkJCSAgIHwgKHN3YXBfbmliYmxlWyhiPj44KSAm IDB4Zl0gPDwgNCkKLQkJCQkgICB8IChzd2FwX25pYmJsZVsoYj4+MTIpICYgMHhmXSkpOwotCSAg ICAgIGIgPj49ICgxNiAtIGZiLT53aWR0aCk7Ci0jaWZkZWYgV09SRFNfQklHRU5ESUFOCi0JICAg ICAgYiA9IGJzd2FwXzE2IChiKTsKLSNlbmRpZgotCSAgICAgICpiaXRzKysgPSBiOwotCSAgICB9 Ci0JfQotI2VuZGlmIC8qIG5vdCBVU0VfQ0FJUk8gKi8KLSNlbmRpZiAvKiBIQVZFX1hfV0lORE9X UyAqLwotCi0jaWZkZWYgSEFWRV9OVEdVSQotICAgICAgdW5zaWduZWQgc2hvcnQgKmJpdHMgPSBm Yi0+Yml0czsKLSAgICAgIGludCBqOwotICAgICAgZm9yIChqID0gMDsgaiA8IGZiLT5oZWlnaHQ7 IGorKykKLQl7Ci0JICB1bnNpZ25lZCBzaG9ydCBiID0gKmJpdHM7Ci0JICBiIDw8PSAoMTYgLSBm Yi0+d2lkdGgpOwotCSAgLyogV2luZG93cyBpcyBsaXR0bGUtZW5kaWFuLCBzbyB0aGUgbmV4dCBs aW5lIGlzIGFsd2F5cwotCSAgICAgbmVlZGVkLiAgKi8KLQkgIGIgPSAoKGIgPj4gOCkgfCAoYiA8 PCA4KSk7Ci0JICAqYml0cysrID0gYjsKLQl9Ci0jZW5kaWYKLSAgICB9Ci0KLSAgaWYgKCFvbmNl X3ApCi0gICAgewotICAgICAgLyogWFhYIElzIFNFTEVDVEVEX0ZSQU1FIE9LIGhlcmU/ICovCi0g ICAgICBzdHJ1Y3QgcmVkaXNwbGF5X2ludGVyZmFjZSAqcmlmID0gRlJBTUVfUklGIChTRUxFQ1RF RF9GUkFNRSAoKSk7Ci0KLSAgICAgIGRlc3Ryb3lfZnJpbmdlX2JpdG1hcCAod2hpY2gpOwotCi0g ICAgICBpZiAocmlmICYmIHJpZi0+ZGVmaW5lX2ZyaW5nZV9iaXRtYXApCi0JcmlmLT5kZWZpbmVf ZnJpbmdlX2JpdG1hcCAod2hpY2gsIGZiLT5iaXRzLCBmYi0+aGVpZ2h0LCBmYi0+d2lkdGgpOwot Ci0gICAgICBmcmluZ2VfYml0bWFwc1t3aGljaF0gPSBmYjsKLSAgICAgIGlmICh3aGljaCA+PSBt YXhfdXNlZF9mcmluZ2VfYml0bWFwKQotCW1heF91c2VkX2ZyaW5nZV9iaXRtYXAgPSB3aGljaCAr IDE7Ci0gICAgfQotfQotCi0KIERFRlVOICgiZGVmaW5lLWZyaW5nZS1iaXRtYXAiLCBGZGVmaW5l X2ZyaW5nZV9iaXRtYXAsIFNkZWZpbmVfZnJpbmdlX2JpdG1hcCwKICAgICAgICAyLCA1LCAwLAog ICAgICAgIGRvYzogLyogRGVmaW5lIGZyaW5nZSBiaXRtYXAgQklUTUFQIGZyb20gQklUUyBvZiBz aXplIEhFSUdIVCB4IFdJRFRILgpAQCAtMTYyNSw3ICsxNTE5LDE3IEBAIGxpc3QgKEFMSUdOIFBF UklPRElDKSB3aGVyZSBQRVJJT0RJQyBub24tbmlsIHNwZWNpZmllcyB0aGF0IHRoZSBiaXRtYXAK IAogICAqeGZiID0gZmI7CiAKLSAgaW5pdF9mcmluZ2VfYml0bWFwIChuLCB4ZmIsIDApOworICAv KiBYWFggSXMgU0VMRUNURURfRlJBTUUgT0sgaGVyZT8gKi8KKyAgc3RydWN0IHJlZGlzcGxheV9p bnRlcmZhY2UgKnJpZiA9IEZSQU1FX1JJRiAoU0VMRUNURURfRlJBTUUgKCkpOworCisgIGRlc3Ry b3lfZnJpbmdlX2JpdG1hcCAobik7CisKKyAgaWYgKHJpZiAmJiByaWYtPmRlZmluZV9mcmluZ2Vf Yml0bWFwKQorICAgIHJpZi0+ZGVmaW5lX2ZyaW5nZV9iaXRtYXAgKG4sIHhmYi0+Yml0cywgeGZi LT5oZWlnaHQsIHhmYi0+d2lkdGgpOworCisgIGZyaW5nZV9iaXRtYXBzW25dID0geGZiOworICBp ZiAobiA+PSBtYXhfdXNlZF9mcmluZ2VfYml0bWFwKQorICAgIG1heF91c2VkX2ZyaW5nZV9iaXRt YXAgPSBuICsgMTsKIAogICByZXR1cm4gYml0bWFwOwogfQpAQCAtMTc0MywxOSArMTY0Nyw5IEBA IG1hcmtfZnJpbmdlX2RhdGEgKHZvaWQpCiAKIC8qIEluaXRpYWxpemUgdGhpcyBtb2R1bGUgd2hl biBFbWFjcyBzdGFydHMuICAqLwogCi1zdGF0aWMgdm9pZCBpbml0X2ZyaW5nZV9vbmNlX2Zvcl9w ZHVtcGVyICh2b2lkKTsKLQogdm9pZAogaW5pdF9mcmluZ2Vfb25jZSAodm9pZCkKIHsKLSAgcGR1 bXBlcl9kb19ub3dfYW5kX2FmdGVyX2xvYWQgKGluaXRfZnJpbmdlX29uY2VfZm9yX3BkdW1wZXIp OwotfQotCi1zdGF0aWMgdm9pZAotaW5pdF9mcmluZ2Vfb25jZV9mb3JfcGR1bXBlciAodm9pZCkK LXsKLSAgZm9yIChpbnQgYnQgPSBOT19GUklOR0VfQklUTUFQICsgMTsgYnQgPCBNQVhfU1RBTkRB UkRfRlJJTkdFX0JJVE1BUFM7IGJ0KyspCi0gICAgaW5pdF9mcmluZ2VfYml0bWFwIChidCwgJnN0 YW5kYXJkX2JpdG1hcHNbYnRdLCAxKTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL3czMnRl cm0uYyBiL3NyYy93MzJ0ZXJtLmMKaW5kZXggOWRhMDg0NS4uODg4YjczNiAxMDA2NDQKLS0tIGEv c3JjL3czMnRlcm0uYworKysgYi9zcmMvdzMydGVybS5jCkBAIC04MzUsOSArODM1LDIyIEBAIHcz Ml9kcmF3X2ZyaW5nZV9iaXRtYXAgKHN0cnVjdCB3aW5kb3cgKncsIHN0cnVjdCBnbHlwaF9yb3cg KnJvdywKIHN0YXRpYyB2b2lkCiB3MzJfZGVmaW5lX2ZyaW5nZV9iaXRtYXAgKGludCB3aGljaCwg dW5zaWduZWQgc2hvcnQgKmJpdHMsIGludCBoLCBpbnQgd2QpCiB7CisjaWZkZWYgSEFWRV9OVEdV SQorICBpbnQgaTsKKworICBmb3IgKGkgPSAwOyBpIDwgaDsgaSsrKQorICAgIHsKKyAgICAgIHVu c2lnbmVkIHNob3J0IGIgPSBiaXRzW2ldOworICAgICAgYiA8PD0gKDE2IC0gd2QpOworICAgICAg LyogV2luZG93cyBpcyBsaXR0bGUtZW5kaWFuLCBzbyB0aGUgbmV4dCBsaW5lIGlzIGFsd2F5cwor ICAgICAgICAgbmVlZGVkLiAgKi8KKyAgICAgIGIgPSAoKGIgPj4gOCkgfCAoYiA8PCA4KSk7Cisg ICAgICBiaXRzW2ldID0gYjsKKyAgICB9CisjZW5kaWYKICAgaWYgKHdoaWNoID49IG1heF9mcmlu Z2VfYm1wKQogICAgIHsKLSAgICAgIGludCBpID0gbWF4X2ZyaW5nZV9ibXA7CisgICAgICBpID0g bWF4X2ZyaW5nZV9ibXA7CiAgICAgICBtYXhfZnJpbmdlX2JtcCA9IHdoaWNoICsgMjA7CiAgICAg ICBmcmluZ2VfYm1wID0gKEhCSVRNQVAgKikgeHJlYWxsb2MgKGZyaW5nZV9ibXAsIG1heF9mcmlu Z2VfYm1wICogc2l6ZW9mIChIQklUTUFQKSk7CiAgICAgICB3aGlsZSAoaSA8IG1heF9mcmluZ2Vf Ym1wKQpkaWZmIC0tZ2l0IGEvc3JjL3h0ZXJtLmMgYi9zcmMveHRlcm0uYwppbmRleCA1ZDhiMTQ4 Li41Y2IxYjI4IDEwMDY0NAotLS0gYS9zcmMveHRlcm0uYworKysgYi9zcmMveHRlcm0uYwpAQCAt NTQ4LDYgKzU0OCwxMSBAQCB4X2VuZF9jcl94bGliX2RyYXdhYmxlIChzdHJ1Y3QgZnJhbWUgKmYs IEdDIGdjKQogCiBzdGF0aWMgaW50IG1heF9mcmluZ2VfYm1wID0gMDsKIHN0YXRpYyBjYWlyb19w YXR0ZXJuX3QgKipmcmluZ2VfYm1wID0gMDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHN3 YXBfbmliYmxlWzE2XSA9IHsKKyAgMHgwLCAweDgsIDB4NCwgMHhjLCAgICAgICAgICAgLyogMDAw MCAxMDAwIDAxMDAgMTEwMCAqLworICAweDIsIDB4YSwgMHg2LCAweGUsICAgICAgICAgICAvKiAw MDEwIDEwMTAgMDExMCAxMTEwICovCisgIDB4MSwgMHg5LCAweDUsIDB4ZCwgICAgICAgICAgIC8q IDAwMDEgMTAwMSAwMTAxIDExMDEgKi8KKyAgMHgzLCAweGIsIDB4NywgMHhmfTsgICAgICAgICAg LyogMDAxMSAxMDExIDAxMTEgMTExMSAqLwogCiBzdGF0aWMgdm9pZAogeF9jcl9kZWZpbmVfZnJp bmdlX2JpdG1hcCAoaW50IHdoaWNoLCB1bnNpZ25lZCBzaG9ydCAqYml0cywgaW50IGgsIGludCB3 ZCkKQEAgLTU3MiwxMCArNTc3LDE4IEBAIHhfY3JfZGVmaW5lX2ZyaW5nZV9iaXRtYXAgKGludCB3 aGljaCwgdW5zaWduZWQgc2hvcnQgKmJpdHMsIGludCBoLCBpbnQgd2QpCiAgIHN0cmlkZSA9IGNh aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZSAoc3VyZmFjZSk7CiAgIGRhdGEgPSBjYWlyb19p bWFnZV9zdXJmYWNlX2dldF9kYXRhIChzdXJmYWNlKTsKIAotICBmb3IgKGkgPSAwOyBpIDwgaDsg aSsrKQorICBmb3IgKGkgPSAwOyBpIDwgaDsgaSsrLCBkYXRhICs9IHN0cmlkZSkKICAgICB7Ci0g ICAgICAqKCh1bnNpZ25lZCBzaG9ydCAqKSBkYXRhKSA9IGJpdHNbaV07Ci0gICAgICBkYXRhICs9 IHN0cmlkZTsKKyAgICAgIHVuc2lnbmVkIHNob3J0IGIgPSBiaXRzW2ldOworI2lmZGVmIFdPUkRT X0JJR0VORElBTgorICAgICAgKigodW5zaWduZWQgc2hvcnQgKikgZGF0YSkgPSAoYiA8PCAoMTYg LSB3ZCkpOworI2Vsc2UKKyAgICAgIGIgPSAodW5zaWduZWQgc2hvcnQpKChzd2FwX25pYmJsZVti ICYgMHhmXSA8PCAxMikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHN3YXBfbmliYmxl WyhiPj40KSAmIDB4Zl0gPDwgOCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHN3YXBf bmliYmxlWyhiPj44KSAmIDB4Zl0gPDwgNCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg KHN3YXBfbmliYmxlWyhiPj4xMikgJiAweGZdKSk7CisgICAgICAqKCh1bnNpZ25lZCBzaG9ydCAq KSBkYXRhKSA9IChiID4+ICgxNiAtIHdkKSk7CisjZW5kaWYKICAgICB9CiAKICAgY2Fpcm9fc3Vy ZmFjZV9tYXJrX2RpcnR5IChzdXJmYWNlKTsKQEAgLTEzOTMsNiArMTQwNiw0NSBAQCB4X2FmdGVy X3VwZGF0ZV93aW5kb3dfbGluZSAoc3RydWN0IHdpbmRvdyAqdywgc3RydWN0IGdseXBoX3JvdyAq ZGVzaXJlZF9yb3cpCiAjZW5kaWYKIH0KIAorI2lmbmRlZiBVU0VfQ0FJUk8KK3N0YXRpYyB2b2lk Cit4X2RlZmluZV9mcmluZ2VfYml0bWFwIChpbnQgd2hpY2gsIHVuc2lnbmVkIHNob3J0ICpiaXRz LCBpbnQgaCwgaW50IHdkKQoreworICAvKiBPbiBYLCB3ZSBiaXQtc3dhcCB0aGUgYnVpbHQtaW4g Yml0bWFwcyBhbmQgcmVkdWNlIGJpdG1hcCAqLworICAvKiBmcm9tIHNob3J0IHRvIGNoYXIgYXJy YXkgaWYgd2lkdGggaXMgPD0gOCBiaXRzLiAqLworICBpbnQgajsKKworICBpZiAod2QgPD0gOCkK KyAgICB7CisgICAgICB1bnNpZ25lZCBjaGFyICpjYml0cyA9ICh1bnNpZ25lZCBjaGFyICopYml0 czsKKyAgICAgIGZvciAoaiA9IDA7IGogPCBoOyBqKyspCisgICAgICAgIHsKKyAgICAgICAgICB1 bnNpZ25lZCBzaG9ydCBiID0gKmJpdHMrKzsKKyAgICAgICAgICB1bnNpZ25lZCBjaGFyIGM7Cisg ICAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSgoc3dhcF9uaWJibGVbYiAmIDB4Zl0gPDwgNCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHN3YXBfbmliYmxlWyhiPj40KSAmIDB4 Zl0pKTsKKyAgICAgICAgICAqY2JpdHMrKyA9IChjID4+ICg4IC0gd2QpKTsKKyAgICAgICAgfQor ICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIGZvciAoaiA9IDA7IGogPCBoOyBqKyspCisgICAg ICAgIHsKKyAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBiID0gKmJpdHM7CisgICAgICAgICAgYiA9 ICh1bnNpZ25lZCBzaG9ydCkoKHN3YXBfbmliYmxlW2IgJiAweGZdIDw8IDEyKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgKHN3YXBfbmliYmxlWyhiPj40KSAmIDB4Zl0gPDwgOCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzd2FwX25pYmJsZVsoYj4+OCkgJiAw eGZdIDw8IDQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc3dhcF9uaWJibGVb KGI+PjEyKSAmIDB4Zl0pKTsKKyAgICAgICAgICBiID4+PSAoMTYgLSB3ZCk7CisjaWZkZWYgV09S RFNfQklHRU5ESUFOCisgICAgICAgICAgYiA9IGJzd2FwXzE2IChiKTsKKyNlbmRpZgorICAgICAg ICAgICpiaXRzKysgPSBiOworICAgICAgICB9CisgICAgfQorfQorI2VuZGlmIC8qIFVTRV9DQUlS TyAqLworCiBzdGF0aWMgdm9pZAogeF9kcmF3X2ZyaW5nZV9iaXRtYXAgKHN0cnVjdCB3aW5kb3cg KncsIHN0cnVjdCBnbHlwaF9yb3cgKnJvdywgc3RydWN0IGRyYXdfZnJpbmdlX2JpdG1hcF9wYXJh bXMgKnApCiB7CkBAIC0xMzM2MSw3ICsxMzQxMyw3IEBAIHhfYWN0aXZhdGVfdGltZW91dF9hdGlt ZXIgKHZvaWQpCiAgICAgeF9jcl9kZWZpbmVfZnJpbmdlX2JpdG1hcCwKICAgICB4X2NyX2Rlc3Ry b3lfZnJpbmdlX2JpdG1hcCwKICNlbHNlCi0gICAgMCwgLyogZGVmaW5lX2ZyaW5nZV9iaXRtYXAg Ki8KKyAgICB4X2RlZmluZV9mcmluZ2VfYml0bWFwLAogICAgIDAsIC8qIGRlc3Ryb3lfZnJpbmdl X2JpdG1hcCAqLwogI2VuZGlmCiAgICAgeF9jb21wdXRlX2dseXBoX3N0cmluZ19vdmVyaGFuZ3Ms Ci0tIAoyLjIwLjEKCg== --000000000000299c7405950e5496--