From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Keith David Bershatsky Newsgroups: gmane.emacs.bugs Subject: bug#22404: 25.1.50; Forcing `window-scroll-functions` to run. Date: Sun, 31 Jan 2016 19:50:05 -0800 Message-ID: References: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 (generated by - "") Content-Type: multipart/mixed; boundary="Multipart_Sun_Jan_31_19:50:03_2016-1" X-Trace: ger.gmane.org 1454298687 9616 80.91.229.3 (1 Feb 2016 03:51:27 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 1 Feb 2016 03:51:27 +0000 (UTC) Cc: 22404@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Feb 01 04:51:14 2016 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1aQ5WD-00081s-GJ for geb-bug-gnu-emacs@m.gmane.org; Mon, 01 Feb 2016 04:51:13 +0100 Original-Received: from localhost ([::1]:44521 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aQ5WC-0007xj-GK for geb-bug-gnu-emacs@m.gmane.org; Sun, 31 Jan 2016 22:51:12 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:60586) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aQ5W7-0007xQ-J7 for bug-gnu-emacs@gnu.org; Sun, 31 Jan 2016 22:51:08 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aQ5W2-00077w-F4 for bug-gnu-emacs@gnu.org; Sun, 31 Jan 2016 22:51:07 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:55519) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aQ5W2-00077s-Bg for bug-gnu-emacs@gnu.org; Sun, 31 Jan 2016 22:51:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84) (envelope-from ) id 1aQ5W2-0000Ol-51 for bug-gnu-emacs@gnu.org; Sun, 31 Jan 2016 22:51:02 -0500 X-Loop: help-debbugs@gnu.org In-Reply-To: Resent-From: Keith David Bershatsky Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 01 Feb 2016 03:51:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 22404 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 22404-submit@debbugs.gnu.org id=B22404.14542986161474 (code B ref 22404); Mon, 01 Feb 2016 03:51:02 +0000 Original-Received: (at 22404) by debbugs.gnu.org; 1 Feb 2016 03:50:16 +0000 Original-Received: from localhost ([127.0.0.1]:43739 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84) (envelope-from ) id 1aQ5VI-0000Ni-2Z for submit@debbugs.gnu.org; Sun, 31 Jan 2016 22:50:16 -0500 Original-Received: from cobb.liquidweb.com ([50.28.13.150]:55510) by debbugs.gnu.org with esmtp (Exim 4.84) (envelope-from ) id 1aQ5VF-0000NV-Rk for 22404@debbugs.gnu.org; Sun, 31 Jan 2016 22:50:14 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lawlist.com; s=default; h=Content-Type:MIME-Version:Subject:Cc:To:From:Message-ID:Date; bh=rDlY5brax27XFHPsv0ccCZ0U0yRuSE9UnFgy7+t+VXU=; b=v8i2uhJdBR6Sl8Vb0/9wz4btewScj08gkwww5FYEHy6dLpBrvflAHb9t2vZGJV8Oh9Ruu/YeXKlHmV2KLlHOHHH0DciyGvpXM71f1s7uhlgTJPcLxmzE/PrKI5Hi/awa; Original-Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:56095 helo=server.private.localhost) by cobb.liquidweb.com with esmtp (Exim 4.82) (envelope-from ) id 1aQ5V4-0001WF-Bo; Sun, 31 Jan 2016 22:50:02 -0500 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - cobb.liquidweb.com X-AntiAbuse: Original Domain - debbugs.gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - lawlist.com X-Get-Message-Sender-Via: cobb.liquidweb.com: acl_c_relayhosts_text_entry: lawlist|lawlist.com 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: 208.118.235.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-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:112179 Archived-At: --Multipart_Sun_Jan_31_19:50:03_2016-1 Content-Type: text/plain; charset=US-ASCII I see that there are a few express circumstances in the function `window-end` where a forced update will not occur, even though a user expressly requested it with the optional argument being set to `t`. Michael had mentioned an unspecified situation where `window-end` was incorrect from the `window-scroll-functions` hook even with a forced update, so perhaps one or more of those expressly coded exceptions is/are to blame. I encountered a similar situation today in my testing with interactively calling `previous-line` at the top window edge (and scroll-conservatively 101) where the `window-end` was not updating correctly. Attached is a diff-patch of the second draft for the new proposed animal that is somewhat similar to the `window-scroll-functions` hook, but this new animal is able to run every command loop even when there is no scrolling. It automatically updates `window-end`, and it throws four (4) values that can be used by the user's custom function attached to the new hook: * window-start * window-end * point at the beginning of the line of window-start. * point at the end of the line of window-end. I added two new symbols for the mode-line: little `%w` for `window-start` and big `%W` for `window-end`. This made debugging much easier, and I do a lot with window-start/end, so it comes in handy for writing other related functions. I removed one double quote in comments in `window.c` that was breaking my font-lock highlighting -- an unmatched double quotes in a comment always causes havoc with my highlighting for the remainder of the buffer, so I try to fix those whenever I come across them. I still haven't figured out how to entirely substitute throwing the switch `w->wsf_toggle = true` with just a buffer-local variable. Ideally, I would prefer that the new hook run whenever local variable `wsf-var` is `t` -- without needing a switch. At the present time, I am throwing the switch each command loop with the `post-command-hook`. [The switch gets set back to `false` during redisplay, and is needed as sort of a counter so that a section of the redisplay code does not run more than necessary.] This draft diff-patch can of course still use some polishing up -- e.g., the forced window update only needs to occur when `wsf-var` is `t`. In future drafts, I'll probably change some of the names to further distinguish this from the built-in WSF. [The built-in WSF section near a patched comment labeled "2 of 3" should probably now have an exception so that it doesn't run merely because this new animal is running, and I'll think some more about that in the coming days.] I'll be using this patch in my daily routine to see how it works out. Here is the sample usage, which is designed to be buffer-local: (setq scroll-conservatively 101) (setq wsf-var t) (defun hr-pch-fn () (force-wsf (selected-window))) (defun hr-wsf-fn (win start end pbol-start peol-end) (message "win: %s | start: %s | end: %s | peol-start: %s | peol-end: %s" win start end pbol-start peol-end)) (add-hook 'post-command-hook 'hr-pch-fn t t) (add-hook 'wsf-hook 'hr-wsf-fn nil t) --Multipart_Sun_Jan_31_19:50:03_2016-1 Content-Type: application/diff; type=patch Content-Disposition: attachment; filename="wsf.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy93aW5kb3cuYyBiL3NyYy93aW5kb3cuYwppbmRleCBlMWEzMGVlLi5j MTZjZDM2IDEwMDY0NAotLS0gYS9zcmMvd2luZG93LmMKKysrIGIvc3JjL3dpbmRvdy5jCkBAIC0x NTU5LDcgKzE1NTksNyBAQCBoYXZlIGJlZW4gaWYgcmVkaXNwbGF5IGhhZCBmaW5pc2hlZCwgZG8g dGhpczoKICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgIChnb3RvLWNoYXIgKHdpbmRvdy1zdGFy dCB3aW5kb3cpKQogICAgICAgKHZlcnRpY2FsLW1vdGlvbiAoMS0gKHdpbmRvdy1oZWlnaHQgd2lu ZG93KSkgd2luZG93KQotICAgICAgKHBvaW50KSkiKSAgKi8KKyAgICAgIChwb2ludCkpKSAgKi8K IAogREVGVU4gKCJ3aW5kb3ctZW5kIiwgRndpbmRvd19lbmQsIFN3aW5kb3dfZW5kLCAwLCAyLCAw LAogICAgICAgIGRvYzogLyogUmV0dXJuIHBvc2l0aW9uIGF0IHdoaWNoIGRpc3BsYXkgY3VycmVu dGx5IGVuZHMgaW4gV0lORE9XLgpAQCAtMzIyOSw2ICszMjI5LDE2IEBAIElmIFdJTkRPVyBpcyBv bWl0dGVkIG9yIG5pbCwgaXQgZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIHdpbmRvdy4gICovKQog ICByZXR1cm4gUW5pbDsKIH0KIAorREVGVU4gKCJmb3JjZS13c2YiLCBGZm9yY2Vfd3NmLCBTZm9y Y2Vfd3NmLCAwLCAxLCAwLAorICAgICAgIGRvYzogLyogU2V0IHdzZl90b2dnbGUgc28gdGhhdCBy ZWRpc3BsYXlfd2luZG93IHdpbGwgcnVuIGB3c2YtaG9vaycKKyhhdCB0aGUgYXBwcm9wcmlhdGUg dGltZSkgZXZlbiBpZiBubyB3aW5kb3cgc2Nyb2xsaW5nIG9jY3Vycy4gICovKQorICAoTGlzcF9P YmplY3Qgd2luZG93KQoreworICByZWdpc3RlciBzdHJ1Y3Qgd2luZG93ICp3ID0gZGVjb2RlX2xp dmVfd2luZG93ICh3aW5kb3cpOworICAgIHctPndzZl90b2dnbGUgPSB0cnVlOworICAgIHJldHVy biB3aW5kb3c7Cit9CisKIC8qIE1ha2UgV0lORE9XIGRpc3BsYXkgQlVGRkVSLiAgUlVOX0hPT0tT X1AgbWVhbnMgaXQncyBhbGxvd2VkCiAgICB0byBydW4gaG9va3MuICBTZWUgbWFrZV9mcmFtZSBm b3IgYSBjYXNlIHdoZXJlIGl0J3Mgbm90IGFsbG93ZWQuCiAgICBLRUVQX01BUkdJTlNfUCBtZWFu cyB0aGF0IHRoZSBjdXJyZW50IG1hcmdpbnMsIGZyaW5nZXMsIGFuZApAQCAtNzQyMyw2ICs3NDMz LDcgQEAgZGlzcGxheWVkIGFmdGVyIGEgc2Nyb2xsaW5nIG9wZXJhdGlvbiB0byBiZSBzb21ld2hh dCBpbmFjY3VyYXRlLiAgKi8pOwogICBkZWZzdWJyICgmU3NldF93aW5kb3dfYnVmZmVyKTsKICAg ZGVmc3ViciAoJlNydW5fd2luZG93X2NvbmZpZ3VyYXRpb25fY2hhbmdlX2hvb2spOwogICBkZWZz dWJyICgmU3J1bl93aW5kb3dfc2Nyb2xsX2Z1bmN0aW9ucyk7CisgIGRlZnN1YnIgKCZTZm9yY2Vf d3NmKTsKICAgZGVmc3ViciAoJlNzZWxlY3Rfd2luZG93KTsKICAgZGVmc3ViciAoJlNmb3JjZV93 aW5kb3dfdXBkYXRlKTsKICAgZGVmc3ViciAoJlNzcGxpdF93aW5kb3dfaW50ZXJuYWwpOwpkaWZm IC0tZ2l0IGEvc3JjL3dpbmRvdy5oIGIvc3JjL3dpbmRvdy5oCmluZGV4IGMyOTIwN2QuLjExYWVh MTMgMTAwNjQ0Ci0tLSBhL3NyYy93aW5kb3cuaAorKysgYi9zcmMvd2luZG93LmgKQEAgLTM0OCw2 ICszNDgsOSBAQCBzdHJ1Y3Qgd2luZG93CiAgICAgICAgVndpbmRvd19zY3JvbGxfZnVuY3Rpb25z OyBhbHNvIGJ5IEZyZWNlbnRlciB3aXRoIGFyZ3VtZW50LiAgKi8KICAgICBib29sX2JmIG9wdGlv bmFsX25ld19zdGFydCA6IDE7CiAKKyAgICAvKiBUcnVlIG1lYW5zIGZvcmNlIGEgY2FsbCB0byBW d3NmX2hvb2suICAqLworICAgIGJvb2xfYmYgd3NmX3RvZ2dsZSA6IDE7CisKICAgICAvKiBUcnVl IG1lYW5zIHRoZSBjdXJzb3IgaXMgY3VycmVudGx5IGRpc3BsYXllZC4gIFRoaXMgY2FuIGJlCiAg ICAgICAgc2V0IHRvIHplcm8gYnkgZnVuY3Rpb25zIG92ZXJwYWludGluZyB0aGUgY3Vyc29yIGlt YWdlLiAgKi8KICAgICBib29sX2JmIHBoeXNfY3Vyc29yX29uX3AgOiAxOwpkaWZmIC0tZ2l0IGEv c3JjL3hkaXNwLmMgYi9zcmMveGRpc3AuYwppbmRleCA3OGZkZGQ2Li43OTQzZTI4IDEwMDY0NAot LS0gYS9zcmMveGRpc3AuYworKysgYi9zcmMveGRpc3AuYwpAQCAtMTM3MDQsNiArMTM3MDQsNyBA QCByZWRpc3BsYXlfaW50ZXJuYWwgKHZvaWQpCiAgICAgICAmJiBtYXRjaF9wCiAgICAgICAmJiAh dy0+Zm9yY2Vfc3RhcnQKICAgICAgICYmICF3LT5vcHRpb25hbF9uZXdfc3RhcnQKKyAgICAgICYm ICF3LT53c2ZfdG9nZ2xlCiAgICAgICAvKiBQb2ludCBtdXN0IGJlIG9uIHRoZSBsaW5lIHRoYXQg d2UgaGF2ZSBpbmZvIHJlY29yZGVkIGFib3V0LiAgKi8KICAgICAgICYmIFBUID49IENIQVJQT1Mg KHRsYnVmcG9zKQogICAgICAgJiYgUFQgPD0gWiAtIENIQVJQT1MgKHRsZW5kcG9zKQpAQCAtMTUw NjIsNiArMTUwNjMsMjcgQEAgcnVuX3dpbmRvd19zY3JvbGxfZnVuY3Rpb25zIChMaXNwX09iamVj dCB3aW5kb3csIHN0cnVjdCB0ZXh0X3BvcyBzdGFydHApCiAgIHJldHVybiBzdGFydHA7CiB9CiAK K3N0YXRpYyBzdHJ1Y3QgdGV4dF9wb3MKK3J1bl93c2YgKExpc3BfT2JqZWN0IHdpbmRvdywgc3Ry dWN0IHRleHRfcG9zIHN0YXJ0cCwgaW50IGVuZHAsCisgICAgICAgICBpbnQgcGJvbF9zdGFydHAs IGludCBwZW9sX2VuZHApCit7CisgIHN0cnVjdCB3aW5kb3cgKncgPSBYV0lORE9XICh3aW5kb3cp OworICBTRVRfTUFSS0VSX0ZST01fVEVYVF9QT1MgKHctPnN0YXJ0LCBzdGFydHApOworICBlYXNz ZXJ0IChjdXJyZW50X2J1ZmZlciA9PSBYQlVGRkVSICh3LT5jb250ZW50cykpOworICBpZiAoIU5J TFAgKFZ3c2ZfaG9vaykKKyAgICAgICYmIChGbG9jYWxfdmFyaWFibGVfcCAoUXdzZl92YXIsIEZ3 aW5kb3dfYnVmZmVyICh3aW5kb3cpKSkpCisgICAgeworICAgICAgQ0FMTE4gKEZydW5faG9va193 aXRoX2FyZ3MsIFF3c2ZfaG9vaywgd2luZG93LAorICAgICAgICBtYWtlX251bWJlciAoQ0hBUlBP UyAoc3RhcnRwKSksCisgICAgICAgIG1ha2VfbnVtYmVyIChlbmRwKSwKKyAgICAgICAgbWFrZV9u dW1iZXIgKHBib2xfc3RhcnRwKSwKKyAgICAgICAgbWFrZV9udW1iZXIgKHBlb2xfZW5kcCkpOwor ICAgICAgU0VUX1RFWFRfUE9TX0ZST01fTUFSS0VSIChzdGFydHAsIHctPnN0YXJ0KTsKKyAgICAg IC8qIEluIGNhc2UgdGhlIGhvb2sgZnVuY3Rpb25zIHN3aXRjaCBidWZmZXJzLiAgKi8KKyAgICAg IHNldF9idWZmZXJfaW50ZXJuYWwgKFhCVUZGRVIgKHctPmNvbnRlbnRzKSk7CisgICAgfQorICBy ZXR1cm4gc3RhcnRwOworfQogCiAvKiBNYWtlIHN1cmUgdGhlIGxpbmUgY29udGFpbmluZyB0aGUg Y3Vyc29yIGlzIGZ1bGx5IHZpc2libGUuCiAgICBBIHZhbHVlIG9mIHRydWUgbWVhbnMgdGhlcmUg aXMgbm90aGluZyB0byBiZSBkb25lLgpAQCAtMTUxNTQsNyArMTUxNzYsNyBAQCB0cnlfc2Nyb2xs aW5nIChMaXNwX09iamVjdCB3aW5kb3csIGJvb2wganVzdF90aGlzX29uZV9wLAogICBzdHJ1Y3Qg ZnJhbWUgKmYgPSBYRlJBTUUgKHctPmZyYW1lKTsKICAgc3RydWN0IHRleHRfcG9zIHBvcywgc3Rh cnRwOwogICBzdHJ1Y3QgaXQgaXQ7Ci0gIGludCB0aGlzX3Njcm9sbF9tYXJnaW4sIHNjcm9sbF9t YXgsIHJjLCBoZWlnaHQ7CisgIGludCB0aGlzX3Njcm9sbF9tYXJnaW4sIHNjcm9sbF9tYXgsIHJj LCBoZWlnaHQsIGVuZHAsIHBib2xfc3RhcnRwLCBwZW9sX2VuZHA7CiAgIGludCBkeSA9IDAsIGFt b3VudF90b19zY3JvbGwgPSAwOwogICBib29sIHNjcm9sbF9kb3duX3AgPSBmYWxzZTsKICAgaW50 IGV4dHJhX3Njcm9sbF9tYXJnaW5fbGluZXMgPSBsYXN0X2xpbmVfbWlzZml0OwpAQCAtMTU0MDMs NiArMTU0MjUsNDAgQEAgdHJ5X3Njcm9sbGluZyAoTGlzcF9PYmplY3Qgd2luZG93LCBib29sIGp1 c3RfdGhpc19vbmVfcCwKICAgLyogUnVuIHdpbmRvdyBzY3JvbGwgZnVuY3Rpb25zLiAgKi8KICAg c3RhcnRwID0gcnVuX3dpbmRvd19zY3JvbGxfZnVuY3Rpb25zICh3aW5kb3csIHN0YXJ0cCk7CiAK KyAgLyogUmVjYWxjdWxhdGUgdGhlIHdpbmRvdyBlbmQgcG9zaXRpb24uICAqLworICBzdHJ1Y3Qg YnVmZmVyICpiOworICBMaXNwX09iamVjdCBidWY7CisgIGJ1ZiA9IHctPmNvbnRlbnRzOworICBD SEVDS19CVUZGRVIgKGJ1Zik7CisgIGIgPSBYQlVGRkVSIChidWYpOworICBzdHJ1Y3QgYnVmZmVy ICpvbGRfYnVmZmVyID0gTlVMTDsKKyAgdm9pZCAqaXRkYXRhID0gTlVMTDsKKyAgICBpZiAoYiAh PSBjdXJyZW50X2J1ZmZlcikKKyAgICAgIHsKKyAgICAgIG9sZF9idWZmZXIgPSBjdXJyZW50X2J1 ZmZlcjsKKyAgICAgIHNldF9idWZmZXJfaW50ZXJuYWwgKGIpOworICAgICAgfQorICAgIENMSVBf VEVYVF9QT1NfRlJPTV9NQVJLRVIgKHN0YXJ0cCwgdy0+c3RhcnQpOworICAgIGl0ZGF0YSA9IGJp ZGlfc2hlbHZlX2NhY2hlICgpOworICAgIHN0YXJ0X2Rpc3BsYXkgKCZpdCwgdywgc3RhcnRwKTsK KyAgICBtb3ZlX2l0X3ZlcnRpY2FsbHkgKCZpdCwgd2luZG93X2JveF9oZWlnaHQgKHcpKTsKKyAg ICBpZiAoaXQuY3VycmVudF95IDwgaXQubGFzdF92aXNpYmxlX3kpCisgICAgICBtb3ZlX2l0X3Bh c3RfZW9sICgmaXQpOworICAgIGVuZHAgPSAoSVRfQ0hBUlBPUyAoaXQpKTsKKyAgICBiaWRpX3Vu c2hlbHZlX2NhY2hlIChpdGRhdGEsIGZhbHNlKTsKKyAgICBpZiAob2xkX2J1ZmZlcikKKyAgICAg IHNldF9idWZmZXJfaW50ZXJuYWwgKG9sZF9idWZmZXIpOworICBwdHJkaWZmX3Qgb3JpZ2luYWxf cG9zID0gUFQ7CisgIFNFVF9QVCAoQ0hBUlBPUyAoc3RhcnRwKSk7CisgIHBib2xfc3RhcnRwID0g WElOVCAoRmxpbmVfYmVnaW5uaW5nX3Bvc2l0aW9uIChRbmlsKSk7CisgIFNFVF9QVCAoZW5kcCk7 CisgIHBlb2xfZW5kcCA9IFhJTlQgKEZsaW5lX2VuZF9wb3NpdGlvbiAoUW5pbCkpOworICBTRVRf UFQgKG9yaWdpbmFsX3Bvcyk7CisgIHN0YXJ0cCA9IHJ1bl93c2YgKHdpbmRvdywgc3RhcnRwLCBl bmRwLCBwYm9sX3N0YXJ0cCwgcGVvbF9lbmRwKTsKKyNpZmRlZiBHTFlQSF9ERUJVRworICBkZWJ1 Z19tZXRob2RfYWRkICh3LCAicnVuX3dzZiBbMSBvZiAzXSIpOworI2VuZGlmCisKICAgLyogRGlz cGxheSB0aGUgd2luZG93LiAgR2l2ZSB1cCBpZiBuZXcgZm9udHMgYXJlIGxvYWRlZCwgb3IgaWYg cG9pbnQKICAgICAgZG9lc24ndCBhcHBlYXIuICAqLwogICBpZiAoIXRyeV93aW5kb3cgKHdpbmRv dywgc3RhcnRwLCAwKSkKQEAgLTE2MDUyLDcgKzE2MTA4LDcgQEAgcmVkaXNwbGF5X3dpbmRvdyAo TGlzcF9PYmplY3Qgd2luZG93LCBib29sIGp1c3RfdGhpc19vbmVfcCkKICAgc3RydWN0IGJ1ZmZl ciAqb2xkID0gY3VycmVudF9idWZmZXI7CiAgIHN0cnVjdCB0ZXh0X3BvcyBscG9pbnQsIG9wb2lu dCwgc3RhcnRwOwogICBib29sIHVwZGF0ZV9tb2RlX2xpbmU7Ci0gIGludCB0ZW07CisgIGludCB0 ZW0sIGVuZHAsIHBib2xfc3RhcnRwLCBwZW9sX2VuZHA7CiAgIHN0cnVjdCBpdCBpdDsKICAgLyog UmVjb3JkIGl0IG5vdyBiZWNhdXNlIGl0J3Mgb3ZlcndyaXR0ZW4uICAqLwogICBib29sIGN1cnJl bnRfbWF0cml4X3VwX3RvX2RhdGVfcCA9IGZhbHNlOwpAQCAtMTYyNTcsMTMgKzE2MzEzLDEyIEBA IHJlZGlzcGxheV93aW5kb3cgKExpc3BfT2JqZWN0IHdpbmRvdywgYm9vbCBqdXN0X3RoaXNfb25l X3ApCiAKICAgLyogSWYgc29tZW9uZSBzcGVjaWZpZWQgYSBuZXcgc3RhcnRpbmcgcG9pbnQgYnV0 IGRpZCBub3QgaW5zaXN0LAogICAgICBjaGVjayB3aGV0aGVyIGl0IGNhbiBiZSB1c2VkLiAgKi8K LSAgaWYgKCh3LT5vcHRpb25hbF9uZXdfc3RhcnQgfHwgd2luZG93X2Zyb3plbl9wICh3KSkKKyAg aWYgKCh3LT5vcHRpb25hbF9uZXdfc3RhcnQgfHwgdy0+d3NmX3RvZ2dsZSB8fCB3aW5kb3dfZnJv emVuX3AgKHcpKQogICAgICAgJiYgQ0hBUlBPUyAoc3RhcnRwKSA+PSBCRUdWCiAgICAgICAmJiBD SEFSUE9TIChzdGFydHApIDw9IFpWKQogICAgIHsKICAgICAgIHB0cmRpZmZfdCBpdF9jaGFycG9z OwogCi0gICAgICB3LT5vcHRpb25hbF9uZXdfc3RhcnQgPSBmYWxzZTsKICAgICAgIHN0YXJ0X2Rp c3BsYXkgKCZpdCwgdywgc3RhcnRwKTsKICAgICAgIG1vdmVfaXRfdG8gKCZpdCwgUFQsIDAsIGl0 Lmxhc3RfdmlzaWJsZV95LCAtMSwKIAkJICBNT1ZFX1RPX1BPUyB8IE1PVkVfVE9fWCB8IE1PVkVf VE9fWSk7CkBAIC0xNjI4NCwxNCArMTYzMzksMjggQEAgcmVkaXNwbGF5X3dpbmRvdyAoTGlzcF9P YmplY3Qgd2luZG93LCBib29sIGp1c3RfdGhpc19vbmVfcCkKIAkgICAgdy0+Zm9yY2Vfc3RhcnQg PSB0cnVlOwogI2lmZGVmIEdMWVBIX0RFQlVHCiAJICBpZiAody0+Zm9yY2Vfc3RhcnQpCi0JICAg IHsKLQkgICAgICBpZiAod2luZG93X2Zyb3plbl9wICh3KSkKLQkJZGVidWdfbWV0aG9kX2FkZCAo dywgInNldCBmb3JjZV9zdGFydCBmcm9tIGZyb3plbiB3aW5kb3cgc3RhcnQiKTsKLQkgICAgICBl bHNlCi0JCWRlYnVnX21ldGhvZF9hZGQgKHcsICJzZXQgZm9yY2Vfc3RhcnQgZnJvbSBvcHRpb25h bF9uZXdfc3RhcnQiKTsKLQkgICAgfQorICAgIHsKKyAgICAgIGlmICh3aW5kb3dfZnJvemVuX3Ag KHcpKQorICAgICAgICB7CisgICAgICAgIGRlYnVnX21ldGhvZF9hZGQgKHcsICJzZXQgZm9yY2Vf c3RhcnQgZnJvbSBmcm96ZW4gd2luZG93IHN0YXJ0Iik7CisgICAgICB9CisgICAgICBlbHNlIGlm ICh3LT5vcHRpb25hbF9uZXdfc3RhcnQpCisgICAgICAgIHsKKyAgICAgICAgZGVidWdfbWV0aG9k X2FkZCAodywgInNldCBmb3JjZV9zdGFydCBmcm9tIG9wdGlvbmFsX25ld19zdGFydCIpOworICAg ICAgfQorICAgICAgZWxzZSBpZiAody0+d3NmX3RvZ2dsZSkKKyAgICAgICAgeworICAgICAgICBk ZWJ1Z19tZXRob2RfYWRkICh3LCAic2V0IGZvcmNlX3N0YXJ0IGZyb20gd3NmX3RvZ2dsZSIpOwor ICAgICAgfQorICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgIGRlYnVnX21ldGhvZF9hZGQg KHcsICJUaGlzIHNpdHVhdGlvbiBpcyBub3QgeWV0IGNvbnRlbXBsYXRlZC4iKTsKKyAgICAgIH0K KyAgICB9CiAjZW5kaWYKIAl9CisgICAgICB3LT5vcHRpb25hbF9uZXdfc3RhcnQgPSBmYWxzZTsK KyAgICAgIHctPndzZl90b2dnbGUgPSBmYWxzZTsKICAgICB9CiAKICBmb3JjZV9zdGFydDoKQEAg LTE2MzE5LDExICsxNjM4OCw0OCBAQCByZWRpc3BsYXlfd2luZG93IChMaXNwX09iamVjdCB3aW5k b3csIGJvb2wganVzdF90aGlzX29uZV9wKQogCSB0aGFuIHRvIGdldCBpbnRvIGFuIGluZmluaXRl IGxvb3AgY2FsbGluZyB0aGUgaG9vayBmdW5jdGlvbnMKIAkgYW5kIGhhdmluZyB0aGVtIGdldCBt b3JlIGVycm9ycy4gICovCiAgICAgICBpZiAoIXVwZGF0ZV9tb2RlX2xpbmUKLQkgIHx8ICEgTklM UCAoVndpbmRvd19zY3JvbGxfZnVuY3Rpb25zKSkKKwkgIHx8ICEgTklMUCAoVndpbmRvd19zY3Jv bGxfZnVuY3Rpb25zKQorCSAgfHwgISBOSUxQIChWd3NmX2hvb2spKQogCXsKIAkgIHVwZGF0ZV9t b2RlX2xpbmUgPSB0cnVlOwogCSAgdy0+dXBkYXRlX21vZGVfbGluZSA9IHRydWU7CisgIC8qIFJ1 biB3aW5kb3cgc2Nyb2xsIGZ1bmN0aW9ucy4gICovCiAJICBzdGFydHAgPSBydW5fd2luZG93X3Nj cm9sbF9mdW5jdGlvbnMgKHdpbmRvdywgc3RhcnRwKTsKKworICAvKiBSZWNhbGN1bGF0ZSB0aGUg d2luZG93IGVuZCBwb3NpdGlvbi4gICovCisgIHN0cnVjdCBidWZmZXIgKmI7CisgIExpc3BfT2Jq ZWN0IGJ1ZjsKKyAgYnVmID0gdy0+Y29udGVudHM7CisgIENIRUNLX0JVRkZFUiAoYnVmKTsKKyAg YiA9IFhCVUZGRVIgKGJ1Zik7CisgIHN0cnVjdCBidWZmZXIgKm9sZF9idWZmZXIgPSBOVUxMOwor ICB2b2lkICppdGRhdGEgPSBOVUxMOworICAgIGlmIChiICE9IGN1cnJlbnRfYnVmZmVyKQorICAg ICAgeworICAgICAgb2xkX2J1ZmZlciA9IGN1cnJlbnRfYnVmZmVyOworICAgICAgc2V0X2J1ZmZl cl9pbnRlcm5hbCAoYik7CisgICAgICB9CisgICAgQ0xJUF9URVhUX1BPU19GUk9NX01BUktFUiAo c3RhcnRwLCB3LT5zdGFydCk7CisgICAgaXRkYXRhID0gYmlkaV9zaGVsdmVfY2FjaGUgKCk7Cisg ICAgc3RhcnRfZGlzcGxheSAoJml0LCB3LCBzdGFydHApOworICAgIG1vdmVfaXRfdmVydGljYWxs eSAoJml0LCB3aW5kb3dfYm94X2hlaWdodCAodykpOworICAgIGlmIChpdC5jdXJyZW50X3kgPCBp dC5sYXN0X3Zpc2libGVfeSkKKyAgICAgIG1vdmVfaXRfcGFzdF9lb2wgKCZpdCk7CisgICAgZW5k cCA9IChJVF9DSEFSUE9TIChpdCkpOworICAgIGJpZGlfdW5zaGVsdmVfY2FjaGUgKGl0ZGF0YSwg ZmFsc2UpOworICAgIGlmIChvbGRfYnVmZmVyKQorICAgICAgc2V0X2J1ZmZlcl9pbnRlcm5hbCAo b2xkX2J1ZmZlcik7CisgIHB0cmRpZmZfdCBvcmlnaW5hbF9wb3MgPSBQVDsKKyAgU0VUX1BUIChD SEFSUE9TIChzdGFydHApKTsKKyAgcGJvbF9zdGFydHAgPSBYSU5UIChGbGluZV9iZWdpbm5pbmdf cG9zaXRpb24gKFFuaWwpKTsKKyAgU0VUX1BUIChlbmRwKTsKKyAgcGVvbF9lbmRwID0gWElOVCAo RmxpbmVfZW5kX3Bvc2l0aW9uIChRbmlsKSk7CisgIFNFVF9QVCAob3JpZ2luYWxfcG9zKTsKKyAg c3RhcnRwID0gcnVuX3dzZiAod2luZG93LCBzdGFydHAsIGVuZHAsIHBib2xfc3RhcnRwLCBwZW9s X2VuZHApOworI2lmZGVmIEdMWVBIX0RFQlVHCisgIGRlYnVnX21ldGhvZF9hZGQgKHcsICJydW5f d3NmIFsyIG9mIDNdIik7CisjZW5kaWYKKwogCX0KIAogICAgICAgaWYgKENIQVJQT1MgKHN0YXJ0 cCkgPCBCRUdWKQpAQCAtMTY1OTEsNiArMTY2OTcsNyBAQCByZWRpc3BsYXlfd2luZG93IChMaXNw X09iamVjdCB3aW5kb3csIGJvb2wganVzdF90aGlzX29uZV9wKQogCSAgICAgYmVjYXVzZSBhIHdp bmRvdyBzY3JvbGwgZnVuY3Rpb24gY2FuIGhhdmUgY2hhbmdlZCB0aGUKIAkgICAgIGJ1ZmZlci4g ICovCiAJICB8fCAhTklMUCAoVndpbmRvd19zY3JvbGxfZnVuY3Rpb25zKQorCSAgfHwgIU5JTFAg KFZ3c2ZfaG9vaykKIAkgIHx8IE1JTklfV0lORE9XX1AgKHcpCiAJICB8fCAhKHVzZWRfY3VycmVu dF9tYXRyaXhfcAogCSAgICAgICA9IHRyeV93aW5kb3dfcmV1c2luZ19jdXJyZW50X21hdHJpeCAo dykpKQpAQCAtMTY3ODgsNiArMTY4OTUsNDAgQEAgcmVkaXNwbGF5X3dpbmRvdyAoTGlzcF9PYmpl Y3Qgd2luZG93LCBib29sIGp1c3RfdGhpc19vbmVfcCkKICAgLyogUnVuIHNjcm9sbCBob29rcy4g ICovCiAgIHN0YXJ0cCA9IHJ1bl93aW5kb3dfc2Nyb2xsX2Z1bmN0aW9ucyAod2luZG93LCBpdC5j dXJyZW50LnBvcyk7CiAKKyAgLyogUmVjYWxjdWxhdGUgdGhlIHdpbmRvdyBlbmQgcG9zaXRpb24u ICAqLworICBzdHJ1Y3QgYnVmZmVyICpiOworICBMaXNwX09iamVjdCBidWY7CisgIGJ1ZiA9IHct PmNvbnRlbnRzOworICBDSEVDS19CVUZGRVIgKGJ1Zik7CisgIGIgPSBYQlVGRkVSIChidWYpOwor ICBzdHJ1Y3QgYnVmZmVyICpvbGRfYnVmZmVyID0gTlVMTDsKKyAgdm9pZCAqaXRkYXRhID0gTlVM TDsKKyAgICBpZiAoYiAhPSBjdXJyZW50X2J1ZmZlcikKKyAgICAgIHsKKyAgICAgIG9sZF9idWZm ZXIgPSBjdXJyZW50X2J1ZmZlcjsKKyAgICAgIHNldF9idWZmZXJfaW50ZXJuYWwgKGIpOworICAg ICAgfQorICAgIENMSVBfVEVYVF9QT1NfRlJPTV9NQVJLRVIgKHN0YXJ0cCwgdy0+c3RhcnQpOwor ICAgIGl0ZGF0YSA9IGJpZGlfc2hlbHZlX2NhY2hlICgpOworICAgIHN0YXJ0X2Rpc3BsYXkgKCZp dCwgdywgc3RhcnRwKTsKKyAgICBtb3ZlX2l0X3ZlcnRpY2FsbHkgKCZpdCwgd2luZG93X2JveF9o ZWlnaHQgKHcpKTsKKyAgICBpZiAoaXQuY3VycmVudF95IDwgaXQubGFzdF92aXNpYmxlX3kpCisg ICAgICBtb3ZlX2l0X3Bhc3RfZW9sICgmaXQpOworICAgIGVuZHAgPSAoSVRfQ0hBUlBPUyAoaXQp KTsKKyAgICBiaWRpX3Vuc2hlbHZlX2NhY2hlIChpdGRhdGEsIGZhbHNlKTsKKyAgICBpZiAob2xk X2J1ZmZlcikKKyAgICAgIHNldF9idWZmZXJfaW50ZXJuYWwgKG9sZF9idWZmZXIpOworICBwdHJk aWZmX3Qgb3JpZ2luYWxfcG9zID0gUFQ7CisgIFNFVF9QVCAoQ0hBUlBPUyAoc3RhcnRwKSk7Cisg IHBib2xfc3RhcnRwID0gWElOVCAoRmxpbmVfYmVnaW5uaW5nX3Bvc2l0aW9uIChRbmlsKSk7Cisg IFNFVF9QVCAoZW5kcCk7CisgIHBlb2xfZW5kcCA9IFhJTlQgKEZsaW5lX2VuZF9wb3NpdGlvbiAo UW5pbCkpOworICBTRVRfUFQgKG9yaWdpbmFsX3Bvcyk7CisgIHN0YXJ0cCA9IHJ1bl93c2YgKHdp bmRvdywgc3RhcnRwLCBlbmRwLCBwYm9sX3N0YXJ0cCwgcGVvbF9lbmRwKTsKKyNpZmRlZiBHTFlQ SF9ERUJVRworICBkZWJ1Z19tZXRob2RfYWRkICh3LCAicnVuX3dzZiBbMyBvZiAzXSIpOworI2Vu ZGlmCisKICAgLyogUmVkaXNwbGF5IHRoZSB3aW5kb3cuICAqLwogICBib29sIHVzZV9kZXNpcmVk X21hdHJpeCA9IGZhbHNlOwogICBpZiAoIWN1cnJlbnRfbWF0cml4X3VwX3RvX2RhdGVfcApAQCAt MTY3OTYsNiArMTY5MzcsNyBAQCByZWRpc3BsYXlfd2luZG93IChMaXNwX09iamVjdCB3aW5kb3cs IGJvb2wganVzdF90aGlzX29uZV9wKQogICAgICAgLyogRG9uJ3QgdXNlIHRyeV93aW5kb3dfcmV1 c2luZ19jdXJyZW50X21hdHJpeCBpbiB0aGlzIGNhc2UKIAkgYmVjYXVzZSBpdCBjYW4gaGF2ZSBj aGFuZ2VkIHRoZSBidWZmZXIuICAqLwogICAgICAgfHwgIU5JTFAgKFZ3aW5kb3dfc2Nyb2xsX2Z1 bmN0aW9ucykKKyAgICAgIHx8ICFOSUxQIChWd3NmX2hvb2spCiAgICAgICB8fCAhanVzdF90aGlz X29uZV9wCiAgICAgICB8fCBNSU5JX1dJTkRPV19QICh3KQogICAgICAgfHwgISh1c2VkX2N1cnJl bnRfbWF0cml4X3AKQEAgLTIzNjcxLDYgKzIzODEzLDIwIEBAIGRlY29kZV9tb2RlX3NwZWMgKHN0 cnVjdCB3aW5kb3cgKncsIHJlZ2lzdGVyIGludCBjLCBpbnQgZmllbGRfd2lkdGgsCiAJICByZXR1 cm4gIkAiOwogICAgICAgfQogCisgICAgY2FzZSAndyc6CisgICAgICB7CisgIHB0cmRpZmZfdCB3 aW5kb3dfc3RhcnQgPSBtYXJrZXJfcG9zaXRpb24gKHctPnN0YXJ0KTsKKyAgcGludDJzdHIgKGRl Y29kZV9tb2RlX3NwZWNfYnVmLCB3aWR0aCwgd2luZG93X3N0YXJ0KTsKKyAgcmV0dXJuIGRlY29k ZV9tb2RlX3NwZWNfYnVmOworICAgICAgfQorCisgICAgY2FzZSAnVyc6CisgICAgICB7CisgIHB0 cmRpZmZfdCB3aW5kb3dfZW5kID0gQlVGX1ogKGIpIC0gdy0+d2luZG93X2VuZF9wb3M7CisgIHBp bnQyc3RyIChkZWNvZGVfbW9kZV9zcGVjX2J1Ziwgd2lkdGgsIHdpbmRvd19lbmQpOworICByZXR1 cm4gZGVjb2RlX21vZGVfc3BlY19idWY7CisgICAgICB9CisKICAgICBjYXNlICd6JzoKICAgICAg IC8qIGNvZGluZy1zeXN0ZW0gKG5vdCBpbmNsdWRpbmcgZW5kLW9mLWxpbmUgZm9ybWF0KSAqLwog ICAgIGNhc2UgJ1onOgpAQCAtMzExMzYsNiArMzEyOTIsNyBAQCBUaGV5IGFyZSBzdGlsbCBsb2dn ZWQgdG8gdGhlICpNZXNzYWdlcyogYnVmZmVyLiAgKi8pOwogICBERUZTWU0gKFFvdmVycmlkaW5n X3Rlcm1pbmFsX2xvY2FsX21hcCwgIm92ZXJyaWRpbmctdGVybWluYWwtbG9jYWwtbWFwIik7CiAg IERFRlNZTSAoUW92ZXJyaWRpbmdfbG9jYWxfbWFwLCAib3ZlcnJpZGluZy1sb2NhbC1tYXAiKTsK ICAgREVGU1lNIChRd2luZG93X3Njcm9sbF9mdW5jdGlvbnMsICJ3aW5kb3ctc2Nyb2xsLWZ1bmN0 aW9ucyIpOworICBERUZTWU0gKFF3c2ZfaG9vaywgIndzZi1ob29rIik7CiAgIERFRlNZTSAoUXdp bmRvd190ZXh0X2NoYW5nZV9mdW5jdGlvbnMsICJ3aW5kb3ctdGV4dC1jaGFuZ2UtZnVuY3Rpb25z Iik7CiAgIERFRlNZTSAoUXJlZGlzcGxheV9lbmRfdHJpZ2dlcl9mdW5jdGlvbnMsICJyZWRpc3Bs YXktZW5kLXRyaWdnZXItZnVuY3Rpb25zIik7CiAgIERFRlNZTSAoUWluaGliaXRfcG9pbnRfbW90 aW9uX2hvb2tzLCAiaW5oaWJpdC1wb2ludC1tb3Rpb24taG9va3MiKTsKQEAgLTMxNDU3LDYgKzMx NjE0LDE2IEBAIGlzIHNjcm9sbGVkLiAgSXQgaXMgbm90IGRlc2lnbmVkIGZvciB0aGF0LCBhbmQg c3VjaCB1c2UgcHJvYmFibHkgd29uJ3QKIHdvcmsuICAqLyk7CiAgIFZ3aW5kb3dfc2Nyb2xsX2Z1 bmN0aW9ucyA9IFFuaWw7CiAKKyAgREVGVkFSX0xJU1AgKCJ3c2YtaG9vayIsIFZ3c2ZfaG9vaywK KyAgICBkb2M6IC8qIFVzZWQgdG8gb2J0YWluIHRoZSBuZXcgYHdpbmRvdy1zdGFydCcgZHVyaW5n IHJlZGlzcGxheS4gICovKTsKKyAgVndzZl9ob29rID0gUW5pbDsKKworICBERUZWQVJfTElTUCAo IndzZi12YXIiLCBWd3NmX3ZhciwKKyAgICBkb2M6IC8qIGB3c2YtaG9va2AgY2hlY2tzIHRvIHNl ZSBpZiBgd3NmLXZhcmAgaXMgc2V0IGxvY2FsbHkuICAqLyk7CisgIFZ3c2ZfdmFyID0gUW5pbDsK KyAgRm1ha2VfdmFyaWFibGVfYnVmZmVyX2xvY2FsIChRd3NmX3Zhcik7CisgIERFRlNZTSAoUXdz Zl92YXIsICJ3c2YtdmFyIik7CisKICAgREVGVkFSX0xJU1AgKCJ3aW5kb3ctdGV4dC1jaGFuZ2Ut ZnVuY3Rpb25zIiwKIAkgICAgICAgVndpbmRvd190ZXh0X2NoYW5nZV9mdW5jdGlvbnMsCiAgICAg ZG9jOiAvKiBGdW5jdGlvbnMgdG8gY2FsbCBpbiByZWRpc3BsYXkgd2hlbiB0ZXh0IGluIHRoZSB3 aW5kb3cgbWlnaHQgY2hhbmdlLiAgKi8pOwo= --Multipart_Sun_Jan_31_19:50:03_2016-1--