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: Tue, 15 Oct 2019 16:45:20 -0300 Message-ID: References: <83a7a2gxp0.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0000000000002ba3ea0594f83aa1" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="25900"; 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 Tue Oct 15 21:46:36 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 1iKSmB-0006Su-0l for geb-bug-gnu-emacs@m.gmane.org; Tue, 15 Oct 2019 21:46:35 +0200 Original-Received: from localhost ([::1]:57724 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iKSm3-00008M-RD for geb-bug-gnu-emacs@m.gmane.org; Tue, 15 Oct 2019 15:46:27 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:42320) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iKSlg-00006v-EB for bug-gnu-emacs@gnu.org; Tue, 15 Oct 2019 15:46:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iKSle-0000xP-J5 for bug-gnu-emacs@gnu.org; Tue, 15 Oct 2019 15:46:04 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:36078) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iKSle-0000xF-EH for bug-gnu-emacs@gnu.org; Tue, 15 Oct 2019 15:46:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1iKSle-0005Ac-A3 for bug-gnu-emacs@gnu.org; Tue, 15 Oct 2019 15:46: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: Tue, 15 Oct 2019 19:46:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 37755 X-GNU-PR-Package: emacs Original-Received: via spool by 37755-submit@debbugs.gnu.org id=B37755.157116874119842 (code B ref 37755); Tue, 15 Oct 2019 19:46:02 +0000 Original-Received: (at 37755) by debbugs.gnu.org; 15 Oct 2019 19:45:41 +0000 Original-Received: from localhost ([127.0.0.1]:44899 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKSlJ-00059x-0N for submit@debbugs.gnu.org; Tue, 15 Oct 2019 15:45:41 -0400 Original-Received: from mail-yw1-f65.google.com ([209.85.161.65]:37981) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKSlG-00059j-5Z for 37755@debbugs.gnu.org; Tue, 15 Oct 2019 15:45:38 -0400 Original-Received: by mail-yw1-f65.google.com with SMTP id s6so7781414ywe.5 for <37755@debbugs.gnu.org>; Tue, 15 Oct 2019 12:45:38 -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=V2tQC4TFO5r6VAfB9Sd7CrGDpJeU24/465iSDME/l8s=; b=tmfGnRYCNZ/Ttph4XUsJWO9+59N66TpVp2IhJUGdmI8nR89CfoOdClfZUrv8lzy5J7 c5kLT+iqAVg2rLJLJsmTsWevbyFwl+NHMQPoX+8xysBcl0oA/hZeKMTBmP/3BFhPjbHV yHmz8/5K5OahSunhBvZeb3/xChh7KqRWaCM/oqGh4ct/8ob7nA0O5IKTkOyhmL/TrD8m 24E+zUltZD3/nCUzhuuwjNaAGvuZV5GEF3uGQgkC5D72gfFljplRrEsCaY4H2HEx6GuQ Gd61/HI6L0EX2ZSsK6YL46ww4NZS9HcLl/NSW4l/+AnEcVI8mffe2OtjVigMqEhnG2es xm8Q== 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=V2tQC4TFO5r6VAfB9Sd7CrGDpJeU24/465iSDME/l8s=; b=Ast3gVCwsyA7yeJ3lXY3Ro/UnUP8BKJuhwsQqvY2IruY6OK57Ov5ovS98iCR50vcoE hPTc4vhIVY/GlolY2TMKVACc4tOtMonCKYsRTaYhoL6dctStB4x/6acHG45Jf5okIOk/ tx4iUEzFiPiLREBWyl12K2csO1OIk8SJQSntNjLx789L7DpCUxJFxYqMYCxa4R7u7Mr6 ZSPriUJeWZ6YHLukhIt2UwDnLxIAWAXbsfhuGXzpLXpTn5vMtFrCD9IoCVo3NVtuIJ5k 7w5P40Qu84CgIxdKSREc8nwU/3T/29tByGNtf6BZfDP7L3Dgr5Hs58UVXKILl2RcdF4D CWkQ== X-Gm-Message-State: APjAAAX7MLf+As+ovyyLGci+UIhMmhXRkNYqrFJlXYeo1PXWwr5h3f+a hHKICH0hT2iX5OysAGh7Fyqu1bJ07uywpHDLdfs= X-Google-Smtp-Source: APXvYqwOZ+WRb2wJ3Hv34qRhdl7/lAFt2QjnSZaBDaAw5A3a27H0NDCqGxu3GxYNm6ezaDdvgQlvOykbWeoaUAC0vVs= X-Received: by 2002:a81:ab42:: with SMTP id d2mr17722399ywk.64.1571168732259; Tue, 15 Oct 2019 12:45:32 -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:169393 Archived-At: --0000000000002ba3ea0594f83aa1 Content-Type: text/plain; charset="UTF-8" This is the modified initialization logic implemented by the attached patch: # When a frame is created, actually call rif->define_fringe_bitmap # for each standard bitmap and also for lisp defined # bitmaps that were created in a daemon with no frame / rif gui_init_fringe (I assume this is called once per frame) for each standard bitmap rif->define_fringe_bitmap for each additional bitmap (recently introduced by [1]) rif->define_fringe_bitmap # When defined from lisp call rif->define_fringe_bitmap # except that we're in daemon with no frame / rif define-fringe-bitmap (lisp) when rif: rif->define_fringe_bitmap Much simpler, don't you think? Also removed ~30 LOCs. Except that I'm overlooking something obvious it seems to do exactly the same, only that the bit shuffling part is postponed until the frame is actually created (that is, moved into rif->define_fringe_bitmap). Some remarks: 1. There was this comment on top of init_fringe_bitmap: "On MAC with big-endian CPU, we need to byte-swap each short". But all the code there were either specific to NTGUI, specific to XWINDOWS or related to bitmap destruction. So nothing remained that could be actually moved into the NS backend. 2. I left the HAVE_NTGUI guard even after moving the relevant code into w32term.c because I'm not sure whether all w32 code share the NTGUI path or not. 3. The previous implementation modified bits as a way of connecting init with define, this was the state passed from one stage to the other. Now, since both parts are done together, there is no need to modify the passed bits array, the array is only required in order to initialize backend-specific structures. Nevertheless, I decided to keep that as it was in order to prevent regressions, but I believe an implementation that preserves the original value of bits would be preferable now that it is indeed possible. In particular, for X the only "backend-specific structure" is an utterly modified bits array (in some cases shorts are converted into chars, that's why I said in #37689 that it's difficult for the upper layer to "split rows" after this kind of manipulations had already taken place). Any reviews would be much appreciated. Best regards -- Carlos --0000000000002ba3ea0594f83aa1 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Fringe-refactor-move-platform-specific-code-into-red.patch" Content-Disposition: attachment; filename="0001-Fringe-refactor-move-platform-specific-code-into-red.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k1s96tur0 RnJvbSBjNDc5MmIxZDdhZDc5NTdiYjA3MTA3ZDZlNDYxMTczYWI0MmQ4N2E3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBtZW1lcGxleCA8Y2FybG9zam9zZXBpdGFAZ21haWwuY29tPgpE YXRlOiBUdWUsIDE1IE9jdCAyMDE5IDE2OjM3OjI0IC0wMzAwClN1YmplY3Q6IFtQQVRDSF0gRnJp bmdlIHJlZmFjdG9yOiBtb3ZlIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgaW50byByZWRpc3BsYXkK IGludGVyZmFjZQoKKiBzcmMvZnJpbmdlLmM6IHJlbW92ZSBpbml0X2ZyaW5nZV9iaXRtYXAKKiBz cmMvdzMydGVybS5jOiBhZGQgTlRHVUkgcGFydHMgdG8gdzMyX2RlZmluZV9mcmluZ2VfYml0bWFw Ciogc3JjL3h0ZXJtLmM6CiAgLSBOZXcgaW50ZXJmYWNlIGZ1bmN0aW9uIGZvciBYMTE6IHhfZGVm aW5lX2ZyaW5nZV9iaXRtYXAKICAtIGFkZCBYV0lORE9XUyBwYXJ0cyB0byB4X2RlZmluZV9mcmlu Z2VfYml0bWFwCiAgLSBhZGQgQ0FJUk8gcGFydHMgdG8geF9jcl9kZWZpbmVfZnJpbmdlX2JpdG1h cAoKRGV0YWlsZWQgZGlzY3Vzc2lvbjogaHR0cHM6Ly9kZWJidWdzLmdudS5vcmcvY2dpL2J1Z3Jl cG9ydC5jZ2k/YnVnPTM3NzU1Ci0tLQogc3JjL2ZyaW5nZS5jICB8IDEyOCArKysrKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL3czMnRlcm0uYyB8ICAx MiArKysrKwogc3JjL3h0ZXJtLmMgICB8ICA1OCArKysrKysrKysrKysrKysrKysrKysrLQogMyBm aWxlcyBjaGFuZ2VkLCA4MCBpbnNlcnRpb25zKCspLCAxMTggZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2ZyaW5nZS5jIGIvc3JjL2ZyaW5nZS5jCmluZGV4IDIyZjNiZGMuLmExN2I2ODQg MTAwNjQ0Ci0tLSBhL3NyYy9mcmluZ2UuYworKysgYi9zcmMvZnJpbmdlLmMKQEAgLTEzODgsMTEy ICsxMzg4LDYgQEAgREVGVU4gKCJkZXN0cm95LWZyaW5nZS1iaXRtYXAiLCBGZGVzdHJveV9mcmlu Z2VfYml0bWFwLCBTZGVzdHJveV9mcmluZ2VfYml0bWFwLAogICByZXR1cm4gUW5pbDsKIH0KIAot Ci0vKiBJbml0aWFsaXplIGJpdG1hcCBiaXQuCi0KLSAgIE9uIFgsIHdlIGJpdC1zd2FwIHRoZSBi dWlsdC1pbiBiaXRtYXBzIGFuZCByZWR1Y2UgYml0bWFwCi0gICBmcm9tIHNob3J0IHRvIGNoYXIg YXJyYXkgaWYgd2lkdGggaXMgPD0gOCBiaXRzLgotCi0gICBPbiBNQUMgd2l0aCBiaWctZW5kaWFu IENQVSwgd2UgbmVlZCB0byBieXRlLXN3YXAgZWFjaCBzaG9ydC4KLQotICAgT24gVzMyIGFuZCBN QUMgKGxpdHRsZSBlbmRpYW4pLCB0aGVyZSdzIG5vIG5lZWQgdG8gZG8gdGhpcy4KLSovCi0KLSNp ZiBkZWZpbmVkIChIQVZFX1hfV0lORE9XUykKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHN3 YXBfbmliYmxlWzE2XSA9IHsKLSAgMHgwLCAweDgsIDB4NCwgMHhjLCAgICAgICAgICAgLyogMDAw MCAxMDAwIDAxMDAgMTEwMCAqLwotICAweDIsIDB4YSwgMHg2LCAweGUsICAgICAgICAgICAvKiAw MDEwIDEwMTAgMDExMCAxMTEwICovCi0gIDB4MSwgMHg5LCAweDUsIDB4ZCwgICAgICAgICAgIC8q IDAwMDEgMTAwMSAwMTAxIDExMDEgKi8KLSAgMHgzLCAweGIsIDB4NywgMHhmfTsgICAgICAgICAg LyogMDAxMSAxMDExIDAxMTEgMTExMSAqLwotI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAg ICAvKiBIQVZFX1hfV0lORE9XUyAqLwotCi1zdGF0aWMgdm9pZAotaW5pdF9mcmluZ2VfYml0bWFw IChpbnQgd2hpY2gsIHN0cnVjdCBmcmluZ2VfYml0bWFwICpmYiwgaW50IG9uY2VfcCkKLXsKLSAg aWYgKG9uY2VfcCB8fCBmYi0+ZHluYW1pYykKLSAgICB7Ci0jaWYgZGVmaW5lZCAoSEFWRV9YX1dJ TkRPV1MpCi0gICAgICB1bnNpZ25lZCBzaG9ydCAqYml0cyA9IGZiLT5iaXRzOwotICAgICAgaW50 IGo7Ci0KLSNpZmRlZiBVU0VfQ0FJUk8KLSAgICAgIGZvciAoaiA9IDA7IGogPCBmYi0+aGVpZ2h0 OyBqKyspCi0JewotCSAgdW5zaWduZWQgc2hvcnQgYiA9ICpiaXRzOwotI2lmZGVmIFdPUkRTX0JJ R0VORElBTgotCSAgKmJpdHMrKyA9IChiIDw8ICgxNiAtIGZiLT53aWR0aCkpOwotI2Vsc2UKLQkg IGIgPSAodW5zaWduZWQgc2hvcnQpKChzd2FwX25pYmJsZVtiICYgMHhmXSA8PCAxMikKLQkJCSAg ICAgICB8IChzd2FwX25pYmJsZVsoYj4+NCkgJiAweGZdIDw8IDgpCi0JCQkgICAgICAgfCAoc3dh cF9uaWJibGVbKGI+PjgpICYgMHhmXSA8PCA0KQotCQkJICAgICAgIHwgKHN3YXBfbmliYmxlWyhi Pj4xMikgJiAweGZdKSk7Ci0JICAqYml0cysrID0gKGIgPj4gKDE2IC0gZmItPndpZHRoKSk7Ci0j ZW5kaWYKLQl9Ci0jZWxzZSAgLyogbm90IFVTRV9DQUlSTyAqLwotICAgICAgaWYgKGZiLT53aWR0 aCA8PSA4KQotCXsKLQkgIHVuc2lnbmVkIGNoYXIgKmNiaXRzID0gKHVuc2lnbmVkIGNoYXIgKilm Yi0+Yml0czsKLQkgIGZvciAoaiA9IDA7IGogPCBmYi0+aGVpZ2h0OyBqKyspCi0JICAgIHsKLQkg ICAgICB1bnNpZ25lZCBzaG9ydCBiID0gKmJpdHMrKzsKLQkgICAgICB1bnNpZ25lZCBjaGFyIGM7 Ci0JICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSgoc3dhcF9uaWJibGVbYiAmIDB4Zl0gPDwgNCkK LQkJCQkgIHwgKHN3YXBfbmliYmxlWyhiPj40KSAmIDB4Zl0pKTsKLQkgICAgICAqY2JpdHMrKyA9 IChjID4+ICg4IC0gZmItPndpZHRoKSk7Ci0JICAgIH0KLQl9Ci0gICAgICBlbHNlCi0JewotCSAg Zm9yIChqID0gMDsgaiA8IGZiLT5oZWlnaHQ7IGorKykKLQkgICAgewotCSAgICAgIHVuc2lnbmVk IHNob3J0IGIgPSAqYml0czsKLQkgICAgICBiID0gKHVuc2lnbmVkIHNob3J0KSgoc3dhcF9uaWJi bGVbYiAmIDB4Zl0gPDwgMTIpCi0JCQkJICAgfCAoc3dhcF9uaWJibGVbKGI+PjQpICYgMHhmXSA8 PCA4KQotCQkJCSAgIHwgKHN3YXBfbmliYmxlWyhiPj44KSAmIDB4Zl0gPDwgNCkKLQkJCQkgICB8 IChzd2FwX25pYmJsZVsoYj4+MTIpICYgMHhmXSkpOwotCSAgICAgIGIgPj49ICgxNiAtIGZiLT53 aWR0aCk7Ci0jaWZkZWYgV09SRFNfQklHRU5ESUFOCi0JICAgICAgYiA9IGJzd2FwXzE2IChiKTsK LSNlbmRpZgotCSAgICAgICpiaXRzKysgPSBiOwotCSAgICB9Ci0JfQotI2VuZGlmIC8qIG5vdCBV U0VfQ0FJUk8gKi8KLSNlbmRpZiAvKiBIQVZFX1hfV0lORE9XUyAqLwotCi0jaWZkZWYgSEFWRV9O VEdVSQotICAgICAgdW5zaWduZWQgc2hvcnQgKmJpdHMgPSBmYi0+Yml0czsKLSAgICAgIGludCBq OwotICAgICAgZm9yIChqID0gMDsgaiA8IGZiLT5oZWlnaHQ7IGorKykKLQl7Ci0JICB1bnNpZ25l ZCBzaG9ydCBiID0gKmJpdHM7Ci0JICBiIDw8PSAoMTYgLSBmYi0+d2lkdGgpOwotCSAgLyogV2lu ZG93cyBpcyBsaXR0bGUtZW5kaWFuLCBzbyB0aGUgbmV4dCBsaW5lIGlzIGFsd2F5cwotCSAgICAg bmVlZGVkLiAgKi8KLQkgIGIgPSAoKGIgPj4gOCkgfCAoYiA8PCA4KSk7Ci0JICAqYml0cysrID0g YjsKLQl9Ci0jZW5kaWYKLSAgICB9Ci0KLSAgaWYgKCFvbmNlX3ApCi0gICAgewotICAgICAgLyog WFhYIElzIFNFTEVDVEVEX0ZSQU1FIE9LIGhlcmU/ICovCi0gICAgICBzdHJ1Y3QgcmVkaXNwbGF5 X2ludGVyZmFjZSAqcmlmID0gRlJBTUVfUklGIChTRUxFQ1RFRF9GUkFNRSAoKSk7Ci0KLSAgICAg IGRlc3Ryb3lfZnJpbmdlX2JpdG1hcCAod2hpY2gpOwotCi0gICAgICBpZiAocmlmICYmIHJpZi0+ ZGVmaW5lX2ZyaW5nZV9iaXRtYXApCi0JcmlmLT5kZWZpbmVfZnJpbmdlX2JpdG1hcCAod2hpY2gs IGZiLT5iaXRzLCBmYi0+aGVpZ2h0LCBmYi0+d2lkdGgpOwotCi0gICAgICBmcmluZ2VfYml0bWFw c1t3aGljaF0gPSBmYjsKLSAgICAgIGlmICh3aGljaCA+PSBtYXhfdXNlZF9mcmluZ2VfYml0bWFw KQotCW1heF91c2VkX2ZyaW5nZV9iaXRtYXAgPSB3aGljaCArIDE7Ci0gICAgfQotfQotCi0KIERF RlVOICgiZGVmaW5lLWZyaW5nZS1iaXRtYXAiLCBGZGVmaW5lX2ZyaW5nZV9iaXRtYXAsIFNkZWZp bmVfZnJpbmdlX2JpdG1hcCwKICAgICAgICAyLCA1LCAwLAogICAgICAgIGRvYzogLyogRGVmaW5l IGZyaW5nZSBiaXRtYXAgQklUTUFQIGZyb20gQklUUyBvZiBzaXplIEhFSUdIVCB4IFdJRFRILgpA QCAtMTYyNSw3ICsxNTE5LDE3IEBAIGxpc3QgKEFMSUdOIFBFUklPRElDKSB3aGVyZSBQRVJJT0RJ QyBub24tbmlsIHNwZWNpZmllcyB0aGF0IHRoZSBiaXRtYXAKIAogICAqeGZiID0gZmI7CiAKLSAg aW5pdF9mcmluZ2VfYml0bWFwIChuLCB4ZmIsIDApOworICAvKiBYWFggSXMgU0VMRUNURURfRlJB TUUgT0sgaGVyZT8gKi8KKyAgc3RydWN0IHJlZGlzcGxheV9pbnRlcmZhY2UgKnJpZiA9IEZSQU1F X1JJRiAoU0VMRUNURURfRlJBTUUgKCkpOworCisgIGRlc3Ryb3lfZnJpbmdlX2JpdG1hcCAobik7 CisKKyAgaWYgKHJpZiAmJiByaWYtPmRlZmluZV9mcmluZ2VfYml0bWFwKQorICAgIHJpZi0+ZGVm aW5lX2ZyaW5nZV9iaXRtYXAgKG4sIHhmYi0+Yml0cywgeGZiLT5oZWlnaHQsIHhmYi0+d2lkdGgp OworCisgIGZyaW5nZV9iaXRtYXBzW25dID0geGZiOworICBpZiAobiA+PSBtYXhfdXNlZF9mcmlu Z2VfYml0bWFwKQorICAgIG1heF91c2VkX2ZyaW5nZV9iaXRtYXAgPSBuICsgMTsKIAogICByZXR1 cm4gYml0bWFwOwogfQpAQCAtMTc0MywxOSArMTY0Nyw5IEBAIG1hcmtfZnJpbmdlX2RhdGEgKHZv aWQpCiAKIC8qIEluaXRpYWxpemUgdGhpcyBtb2R1bGUgd2hlbiBFbWFjcyBzdGFydHMuICAqLwog Ci1zdGF0aWMgdm9pZCBpbml0X2ZyaW5nZV9vbmNlX2Zvcl9wZHVtcGVyICh2b2lkKTsKLQogdm9p ZAogaW5pdF9mcmluZ2Vfb25jZSAodm9pZCkKIHsKLSAgcGR1bXBlcl9kb19ub3dfYW5kX2FmdGVy X2xvYWQgKGluaXRfZnJpbmdlX29uY2VfZm9yX3BkdW1wZXIpOwotfQotCi1zdGF0aWMgdm9pZAot aW5pdF9mcmluZ2Vfb25jZV9mb3JfcGR1bXBlciAodm9pZCkKLXsKLSAgZm9yIChpbnQgYnQgPSBO T19GUklOR0VfQklUTUFQICsgMTsgYnQgPCBNQVhfU1RBTkRBUkRfRlJJTkdFX0JJVE1BUFM7IGJ0 KyspCi0gICAgaW5pdF9mcmluZ2VfYml0bWFwIChidCwgJnN0YW5kYXJkX2JpdG1hcHNbYnRdLCAx KTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL3czMnRlcm0uYyBiL3NyYy93MzJ0ZXJtLmMK aW5kZXggOWRhMDg0NS4uYzQzYWQ4MSAxMDA2NDQKLS0tIGEvc3JjL3czMnRlcm0uYworKysgYi9z cmMvdzMydGVybS5jCkBAIC04MzUsNiArODM1LDE4IEBAIHczMl9kcmF3X2ZyaW5nZV9iaXRtYXAg KHN0cnVjdCB3aW5kb3cgKncsIHN0cnVjdCBnbHlwaF9yb3cgKnJvdywKIHN0YXRpYyB2b2lkCiB3 MzJfZGVmaW5lX2ZyaW5nZV9iaXRtYXAgKGludCB3aGljaCwgdW5zaWduZWQgc2hvcnQgKmJpdHMs IGludCBoLCBpbnQgd2QpCiB7CisjaWZkZWYgSEFWRV9OVEdVSQorICBpbnQgajsKKyAgZm9yIChq ID0gMDsgaiA8IGg7IGorKykKKyAgICB7CisgICAgICB1bnNpZ25lZCBzaG9ydCBiID0gKmJpdHM7 CisgICAgICBiIDw8PSAoMTYgLSB3ZCk7CisgICAgICAvKiBXaW5kb3dzIGlzIGxpdHRsZS1lbmRp YW4sIHNvIHRoZSBuZXh0IGxpbmUgaXMgYWx3YXlzCisgICAgICAgICBuZWVkZWQuICAqLworICAg ICAgYiA9ICgoYiA+PiA4KSB8IChiIDw8IDgpKTsKKyAgICAgICpiaXRzKysgPSBiOworICAgIH0K KyNlbmRpZgogICBpZiAod2hpY2ggPj0gbWF4X2ZyaW5nZV9ibXApCiAgICAgewogICAgICAgaW50 IGkgPSBtYXhfZnJpbmdlX2JtcDsKZGlmZiAtLWdpdCBhL3NyYy94dGVybS5jIGIvc3JjL3h0ZXJt LmMKaW5kZXggNWQ4YjE0OC4uYThjMjk0NCAxMDA2NDQKLS0tIGEvc3JjL3h0ZXJtLmMKKysrIGIv c3JjL3h0ZXJtLmMKQEAgLTU0OCw2ICs1NDgsMTEgQEAgeF9lbmRfY3JfeGxpYl9kcmF3YWJsZSAo c3RydWN0IGZyYW1lICpmLCBHQyBnYykKIAogc3RhdGljIGludCBtYXhfZnJpbmdlX2JtcCA9IDA7 CiBzdGF0aWMgY2Fpcm9fcGF0dGVybl90ICoqZnJpbmdlX2JtcCA9IDA7CitzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBzd2FwX25pYmJsZVsxNl0gPSB7CisgIDB4MCwgMHg4LCAweDQsIDB4Yywg ICAgICAgICAgIC8qIDAwMDAgMTAwMCAwMTAwIDExMDAgKi8KKyAgMHgyLCAweGEsIDB4NiwgMHhl LCAgICAgICAgICAgLyogMDAxMCAxMDEwIDAxMTAgMTExMCAqLworICAweDEsIDB4OSwgMHg1LCAw eGQsICAgICAgICAgICAvKiAwMDAxIDEwMDEgMDEwMSAxMTAxICovCisgIDB4MywgMHhiLCAweDcs IDB4Zn07ICAgICAgICAgIC8qIDAwMTEgMTAxMSAwMTExIDExMTEgKi8KIAogc3RhdGljIHZvaWQK IHhfY3JfZGVmaW5lX2ZyaW5nZV9iaXRtYXAgKGludCB3aGljaCwgdW5zaWduZWQgc2hvcnQgKmJp dHMsIGludCBoLCBpbnQgd2QpCkBAIC01NTcsNiArNTYyLDIwIEBAIHhfY3JfZGVmaW5lX2ZyaW5n ZV9iaXRtYXAgKGludCB3aGljaCwgdW5zaWduZWQgc2hvcnQgKmJpdHMsIGludCBoLCBpbnQgd2Qp CiAgIGNhaXJvX3BhdHRlcm5fdCAqcGF0dGVybjsKICAgdW5zaWduZWQgY2hhciAqZGF0YTsKIAor ICBmb3IgKGkgPSAwOyBpIDwgaDsgaSsrKQorICAgIHsKKyAgICAgIHVuc2lnbmVkIHNob3J0IGIg PSAqYml0czsKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKyAgICAgICpiaXRzKysgPSAoYiA8PCAo MTYgLSBmYi0+d2lkdGgpKTsKKyNlbHNlCisgICAgICBiID0gKHVuc2lnbmVkIHNob3J0KSgoc3dh cF9uaWJibGVbYiAmIDB4Zl0gPDwgMTIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChz d2FwX25pYmJsZVsoYj4+NCkgJiAweGZdIDw8IDgpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IChzd2FwX25pYmJsZVsoYj4+OCkgJiAweGZdIDw8IDQpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IChzd2FwX25pYmJsZVsoYj4+MTIpICYgMHhmXSkpOworICAgICAgKmJpdHMrKyA9 IChiID4+ICgxNiAtIHdkKSk7CisjZW5kaWYKKyAgICB9CisKICAgaWYgKHdoaWNoID49IG1heF9m cmluZ2VfYm1wKQogICAgIHsKICAgICAgIGkgPSBtYXhfZnJpbmdlX2JtcDsKQEAgLTEzOTMsNiAr MTQxMiw0MyBAQCB4X2FmdGVyX3VwZGF0ZV93aW5kb3dfbGluZSAoc3RydWN0IHdpbmRvdyAqdywg c3RydWN0IGdseXBoX3JvdyAqZGVzaXJlZF9yb3cpCiAjZW5kaWYKIH0KIAorc3RhdGljIHZvaWQK K3hfZGVmaW5lX2ZyaW5nZV9iaXRtYXAgKGludCB3aGljaCwgdW5zaWduZWQgc2hvcnQgKmJpdHMs IGludCBoLCBpbnQgd2QpCit7CisgIC8qIE9uIFgsIHdlIGJpdC1zd2FwIHRoZSBidWlsdC1pbiBi aXRtYXBzIGFuZCByZWR1Y2UgYml0bWFwICovCisgIC8qIGZyb20gc2hvcnQgdG8gY2hhciBhcnJh eSBpZiB3aWR0aCBpcyA8PSA4IGJpdHMuICovCisgIGludCBqOworCisgIGlmICh3ZCA8PSA4KQor ICAgIHsKKyAgICAgIHVuc2lnbmVkIGNoYXIgKmNiaXRzID0gKHVuc2lnbmVkIGNoYXIgKiliaXRz OworICAgICAgZm9yIChqID0gMDsgaiA8IGg7IGorKykKKyAgICAgICAgeworICAgICAgICAgIHVu c2lnbmVkIHNob3J0IGIgPSAqYml0cysrOworICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKKyAg ICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpKChzd2FwX25pYmJsZVtiICYgMHhmXSA8PCA0KQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc3dhcF9uaWJibGVbKGI+PjQpICYgMHhm XSkpOworICAgICAgICAgICpjYml0cysrID0gKGMgPj4gKDggLSB3ZCkpOworICAgICAgICB9Cisg ICAgfQorICBlbHNlCisgICAgeworICAgICAgZm9yIChqID0gMDsgaiA8IGg7IGorKykKKyAgICAg ICAgeworICAgICAgICAgIHVuc2lnbmVkIHNob3J0IGIgPSAqYml0czsKKyAgICAgICAgICBiID0g KHVuc2lnbmVkIHNob3J0KSgoc3dhcF9uaWJibGVbYiAmIDB4Zl0gPDwgMTIpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAoc3dhcF9uaWJibGVbKGI+PjQpICYgMHhmXSA8PCA4KQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHN3YXBfbmliYmxlWyhiPj44KSAmIDB4 Zl0gPDwgNCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzd2FwX25pYmJsZVso Yj4+MTIpICYgMHhmXSkpOworICAgICAgICAgIGIgPj49ICgxNiAtIHdkKTsKKyNpZmRlZiBXT1JE U19CSUdFTkRJQU4KKyAgICAgICAgICBiID0gYnN3YXBfMTYgKGIpOworI2VuZGlmCisgICAgICAg ICAgKmJpdHMrKyA9IGI7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHN0YXRpYyB2b2lkCiB4X2Ry YXdfZnJpbmdlX2JpdG1hcCAoc3RydWN0IHdpbmRvdyAqdywgc3RydWN0IGdseXBoX3JvdyAqcm93 LCBzdHJ1Y3QgZHJhd19mcmluZ2VfYml0bWFwX3BhcmFtcyAqcCkKIHsKQEAgLTEzMzYxLDcgKzEz NDE3LDcgQEAgeF9hY3RpdmF0ZV90aW1lb3V0X2F0aW1lciAodm9pZCkKICAgICB4X2NyX2RlZmlu ZV9mcmluZ2VfYml0bWFwLAogICAgIHhfY3JfZGVzdHJveV9mcmluZ2VfYml0bWFwLAogI2Vsc2UK LSAgICAwLCAvKiBkZWZpbmVfZnJpbmdlX2JpdG1hcCAqLworICAgIHhfZGVmaW5lX2ZyaW5nZV9i aXRtYXAsCiAgICAgMCwgLyogZGVzdHJveV9mcmluZ2VfYml0bWFwICovCiAjZW5kaWYKICAgICB4 X2NvbXB1dGVfZ2x5cGhfc3RyaW5nX292ZXJoYW5ncywKLS0gCjIuMjAuMQoK --0000000000002ba3ea0594f83aa1--