From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Ng, Andrew" Newsgroups: gmane.emacs.devel,gmane.emacs.bugs Subject: Emacs 22.3 Windows Draw/Redraw Issues Date: Fri, 19 Sep 2008 14:00:05 -0400 Message-ID: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C91A81.8CC56F9C" X-Trace: ger.gmane.org 1221847249 5039 80.91.229.12 (19 Sep 2008 18:00:49 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 19 Sep 2008 18:00:49 +0000 (UTC) To: , Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Sep 19 20:01:44 2008 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1KgkIZ-0006ZN-0v for ged-emacs-devel@m.gmane.org; Fri, 19 Sep 2008 20:01:43 +0200 Original-Received: from localhost ([127.0.0.1]:59686 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KgkHX-0002Cb-JZ for ged-emacs-devel@m.gmane.org; Fri, 19 Sep 2008 14:00:39 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KgkHS-0002B8-Ea for emacs-devel@gnu.org; Fri, 19 Sep 2008 14:00:34 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KgkHQ-00028h-2G for emacs-devel@gnu.org; Fri, 19 Sep 2008 14:00:33 -0400 Original-Received: from [199.232.76.173] (port=59596 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KgkHP-00028B-L5; Fri, 19 Sep 2008 14:00:31 -0400 Original-Received: from irp2.ptc.com ([12.11.148.84]:57088) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KgkHP-000480-9Y; Fri, 19 Sep 2008 14:00:31 -0400 X-IronPort-AV: E=Sophos;i="4.32,431,1217822400"; d="txt'208?html'208?scan'208,208";a="25695452" Original-Received: from unknown (HELO hq-ex3fe3.ptcnet.ptc.com) ([132.253.201.67]) by irp2.ptc.com with ESMTP; 19 Sep 2008 14:00:18 -0400 Original-Received: from HQ-MAIL3.ptcnet.ptc.com ([132.253.202.90]) by hq-ex3fe3.ptcnet.ptc.com with Microsoft SMTPSVC(6.0.3790.3959); Fri, 19 Sep 2008 14:00:18 -0400 X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message X-MS-Has-Attach: yes X-MS-TNEF-Correlator: Thread-Topic: Emacs 22.3 Windows Draw/Redraw Issues Thread-Index: AckagYwQZaAXxtXBRf2erzB2EQc7mA== X-OriginalArrivalTime: 19 Sep 2008 18:00:18.0903 (UTC) FILETIME=[93C4EE70:01C91A81] X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:103975 gmane.emacs.bugs:20656 Archived-At: This is a multi-part message in MIME format. ------_=_NextPart_001_01C91A81.8CC56F9C Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable I have come across various draw/redraw problems with Emacs on Windows, particular since ClearType support was enabled. These problems annoyed me sufficiently that I decided to fix them myself. I have tried to get these fixes submitted previously, but with no success thus far. I've included two test files that show some of these issues. If you run a plain "emacs -Q" and load in "test.html" and then move the cursor right over the text, you will see problems with the italic text as the cursor is moved to the right. It's particularly noticeable on the 'W' and 'H' characters. Load in the "test.txt" file and you will notice the same problem with italic text. If you shrink the Emacs window such that the buffer is 3 lines high and then page up and down, you will sometimes get a stray pixel appear in the top left hand corner of the 'C' character. The issues described above happen both with or without ClearType enabled. Using a font such as "Lucida Console" with "w32-enable-synthesized-fonts" enabled further highlights some of the issues. The issues will vary depending on the font used. I've included diffs for the files that I have modified based on the current source from the "EMACS_22_BASE" branch. There are quite a few changes, so I expect this won't be a straightforward submission, if it is accepted. I have already signed and returned all appropriate paperwork to allow my changes to be accepted. Thanks. Regards, Andrew Ng ------_=_NextPart_001_01C91A81.8CC56F9C Content-Type: application/octet-stream; name="diffs" Content-Transfer-Encoding: base64 Content-Description: diffs Content-Disposition: attachment; filename="diffs" SW5kZXg6IGRpc3BuZXcuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvc291cmNlcy9lbWFjcy9lbWFj cy9zcmMvZGlzcG5ldy5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM5Mi4yLjMKZGlmZiAtdSAt cjEuMzkyLjIuMyBkaXNwbmV3LmMKLS0tIGRpc3BuZXcuYwk1IE1hciAyMDA4IDAwOjUwOjA2IC0w MDAwCTEuMzkyLjIuMworKysgZGlzcG5ldy5jCTE5IFNlcCAyMDA4IDE3OjIxOjUzIC0wMDAwCkBA IC00NTIyLDkgKzQ1MjIsNyBAQAogCQkgdGFrZW4gY2FyZSBvZiBieSBkcmF3X2dseXBocy4gICov CiAJICAgICAgaWYgKG92ZXJsYXBwaW5nX2dseXBoc19wCiAJCSAgJiYgaSA+IDAKLQkJICAmJiBp IDwgY3VycmVudF9yb3ctPnVzZWRbVEVYVF9BUkVBXQotCQkgICYmIChjdXJyZW50X3Jvdy0+dXNl ZFtURVhUX0FSRUFdCi0JCSAgICAgICE9IGRlc2lyZWRfcm93LT51c2VkW1RFWFRfQVJFQV0pKQor CQkgICYmIGkgPCBjdXJyZW50X3Jvdy0+dXNlZFtURVhUX0FSRUFdKQogCQl7CiAJCSAgaW50IGxl ZnQsIHJpZ2h0OwogCkluZGV4OiBtYWN0ZXJtLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3NvdXJj ZXMvZW1hY3MvZW1hY3Mvc3JjL0F0dGljL21hY3Rlcm0uYyx2CnJldHJpZXZpbmcgcmV2aXNpb24g MS4yMTQuMi4zMQpkaWZmIC11IC1yMS4yMTQuMi4zMSBtYWN0ZXJtLmMKLS0tIG1hY3Rlcm0uYwky IFNlcCAyMDA4IDA4OjE5OjA2IC0wMDAwCTEuMjE0LjIuMzEKKysrIG1hY3Rlcm0uYwkxOSBTZXAg MjAwOCAxNzoyMTo1OCAtMDAwMApAQCAtMjc3NCw2ICsyNzc0LDggQEAKICAgICAgIFhDaGFyU3Ry dWN0IGNzOwogCiAgICAgICBtYWNfdGV4dF9leHRlbnRzXzE2IChzLT5mb250LCBzLT5jaGFyMmIs IHMtPm5jaGFycywgJmNzKTsKKyAgICAgIGlmIChzLT5mYWNlLT5vdmVyc3RyaWtlKQorICAgICAg ICBjcy5yYmVhcmluZysrOwogICAgICAgcy0+cmlnaHRfb3ZlcmhhbmcgPSBjcy5yYmVhcmluZyA+ IGNzLndpZHRoID8gY3MucmJlYXJpbmcgLSBjcy53aWR0aCA6IDA7CiAgICAgICBzLT5sZWZ0X292 ZXJoYW5nID0gY3MubGJlYXJpbmcgPCAwID8gLWNzLmxiZWFyaW5nIDogMDsKICAgICB9CkBAIC0y Nzg5LDYgKzI3OTEsOCBAQAogICAgICAgVGV4dEZhY2UgKGZvbnQtPm1hY19mb250ZmFjZSk7CiAK ICAgICAgIFFEVGV4dEJvdW5kcyAocy0+bmNoYXJzICogMiwgKGNoYXIgKilzLT5jaGFyMmIsICZy KTsKKyAgICAgIGlmIChzLT5mYWNlLT5vdmVyc3RyaWtlKQorICAgICAgICByLnJpZ2h0Kys7CiAK ICAgICAgIG1hY19lbmRfY2xpcCAocy0+ZiwgTlVMTCk7CiAKSW5kZXg6IHczMnRlcm0uYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ClJDUyBmaWxlOiAvc291cmNlcy9lbWFjcy9lbWFjcy9zcmMvdzMydGVybS5jLHYKcmV0 cmlldmluZyByZXZpc2lvbiAxLjI1OS4yLjEyCmRpZmYgLXUgLXIxLjI1OS4yLjEyIHczMnRlcm0u YwotLS0gdzMydGVybS5jCTEgQXVnIDIwMDggMTU6MTA6NTAgLTAwMDAJMS4yNTkuMi4xMgorKysg dzMydGVybS5jCTE5IFNlcCAyMDA4IDE3OjIyOjAxIC0wMDAwCkBAIC0xNDYsNiArMTQ2LDEwIEBA CiAvKiBGbGFnIHRvIGVuYWJsZSBDbGVhcnR5cGUgaGFjayBmb3IgZm9udCBtZXRyaWNzLiAgKi8K IHN0YXRpYyBpbnQgY2xlYXJ0eXBlX2FjdGl2ZTsKIAorLyogRHluYW1pYyBsaW5raW5nIHRvIEdl dENoYXJBQkNXaWR0aHNGbG9hdCAobm90IGF2YWlsYWJsZSBvbiA5NSwgOTgsIE1FKS4gICovCitC T09MIChQQVNDQUwgKnBmbkdldENoYXJBQkNXaWR0aHNGbG9hdFcpIChIREMgaGRjLCBVSU5UIGlG aXJzdENoYXIsIFVJTlQgaUxhc3RDaGFyLCBMUEFCQ0ZMT0FUIGxwQUJDRik7CitCT09MIChQQVND QUwgKnBmbkdldENoYXJBQkNXaWR0aHNGbG9hdEEpIChIREMgaGRjLCBVSU5UIGlGaXJzdENoYXIs IFVJTlQgaUxhc3RDaGFyLCBMUEFCQ0ZMT0FUIGxwQUJDRik7CisKIERXT1JEIGR3V2luZG93c1Ro cmVhZElkID0gMDsKIEhBTkRMRSBoV2luZG93c1RocmVhZCA9IE5VTEw7CiBEV09SRCBkd01haW5U aHJlYWRJZCA9IDA7CkBAIC04ODEsNyArODg1LDM5IEBACiAKICAgb2xkX2ZvbnQgPSBTZWxlY3RP YmplY3QgKGhkYywgZm9udC0+aGZvbnQpOwogCi0gIGlmICgoZm9udC0+dG0udG1QaXRjaEFuZEZh bWlseSAmIFRNUEZfVFJVRVRZUEUpICE9IDApCisgIGlmIChwZm5HZXRDaGFyQUJDV2lkdGhzRmxv YXRXICYmIHBmbkdldENoYXJBQkNXaWR0aHNGbG9hdEEpCisgICAgeworICAgICAgQUJDRkxPQVQg Y2hhcl93aWR0aHM7CisKKyAgICAgIGlmIChmb250X3R5cGUgPT0gVU5JQ09ERV9GT05UKQorCXJl dHZhbCA9IHBmbkdldENoYXJBQkNXaWR0aHNGbG9hdFcgKGhkYywgKmNoYXIyYiwgKmNoYXIyYiwg JmNoYXJfd2lkdGhzKTsKKyAgICAgIGVsc2UKKwlyZXR2YWwgPSBwZm5HZXRDaGFyQUJDV2lkdGhz RmxvYXRBIChoZGMsICpjaGFyMmIsICpjaGFyMmIsICZjaGFyX3dpZHRocyk7CisKKyAgICAgIGlm IChyZXR2YWwpCisJeworCSAgaWYgKGNsZWFydHlwZV9hY3RpdmUKKyAgICAgICAgICAgICAgJiYg KChmb250LT50bS50bVBpdGNoQW5kRmFtaWx5ICYgVE1QRl9UUlVFVFlQRSkgIT0gMCkKKyAgICAg ICAgICAgICAgJiYgKCpjaGFyMmIgIT0gJyAnKSkKKwkgICAgeworCSAgICAgIC8qIENsZWFydHlw ZSBhbnRpYWxpYXNpbmcgY2FuIGNhdXNlIGNoYXJhY3RlcnMgdG8gb3ZlcmhhbmcKKwkJIGJ5IGEg cGl4ZWwgb24gZWFjaCBzaWRlIGNvbXBhcmVkIHdpdGggd2hhdCBHZXRDaGFyQUJDV2lkdGhzCisJ CSByZXBvcnRzLiAgKi8KKwkgICAgICBjaGFyX3dpZHRocy5hYmNmQSAtPSAxOworCSAgICAgIGNo YXJfd2lkdGhzLmFiY2ZDIC09IDE7CisJICAgICAgY2hhcl93aWR0aHMuYWJjZkIgKz0gMjsKKwkg ICAgfQorCisJICBwY20tPndpZHRoID0gKHNob3J0KSAoY2hhcl93aWR0aHMuYWJjZkEgKyBjaGFy X3dpZHRocy5hYmNmQiArIGNoYXJfd2lkdGhzLmFiY2ZDKTsKKworCSAgcGNtLT5sYmVhcmluZyA9 IChzaG9ydCkgY2hhcl93aWR0aHMuYWJjZkE7CisJICBwY20tPnJiZWFyaW5nID0gKHNob3J0KSAo Y2hhcl93aWR0aHMuYWJjZkEgKyBjaGFyX3dpZHRocy5hYmNmQik7CisJICBwY20tPmFzY2VudCA9 IEZPTlRfQkFTRSAoZm9udCk7CisJICBwY20tPmRlc2NlbnQgPSBGT05UX0RFU0NFTlQgKGZvbnQp OworCX0KKyAgICB9CisKKyAgaWYgKCFyZXR2YWwgJiYgKChmb250LT50bS50bVBpdGNoQW5kRmFt aWx5ICYgVE1QRl9UUlVFVFlQRSkgIT0gMCkpCiAgICAgewogICAgICAgQUJDIGNoYXJfd2lkdGhz OwogCkBAIC05MDEsOSArOTM3LDkgQEAKIAkgIGludCByZWFsX3dpZHRoOwogCSAgR2V0Q2hhcldp ZHRoIChoZGMsICpjaGFyMmIsICpjaGFyMmIsICZyZWFsX3dpZHRoKTsKICNlbmRpZgotCSAgaWYg KGNsZWFydHlwZV9hY3RpdmUpCisJICBpZiAoY2xlYXJ0eXBlX2FjdGl2ZSAmJiAoKmNoYXIyYiAh PSAnICcpKQogCSAgICB7Ci0JICAgICAgLyogQ2xlYXJ0eXBlIGFudGlhbGlhc2luZyBjYXVzZXMg Y2hhcmFjdGVycyB0byBvdmVyaGFuZworCSAgICAgIC8qIENsZWFydHlwZSBhbnRpYWxpYXNpbmcg Y2FuIGNhdXNlIGNoYXJhY3RlcnMgdG8gb3ZlcmhhbmcKIAkJIGJ5IGEgcGl4ZWwgb24gZWFjaCBz aWRlIGNvbXBhcmVkIHdpdGggd2hhdCBHZXRDaGFyQUJDV2lkdGhzCiAJCSByZXBvcnRzLiAgKi8K IAkgICAgICBjaGFyX3dpZHRocy5hYmNBIC09IDE7CkBAIC05NDcsMTUgKzk4MywxNCBAQAogCiAg ICAgICBpZiAocmV0dmFsKQogCXsKLQkgIHBjbS0+d2lkdGggPSBzei5jeCAtIGZvbnQtPnRtLnRt T3Zlcmhhbmc7Ci0JICBwY20tPnJiZWFyaW5nID0gc3ouY3g7CisJICBwY20tPndpZHRoID0gc3ou Y3g7CisJICBwY20tPnJiZWFyaW5nID0gc3ouY3ggKyBmb250LT50bS50bU92ZXJoYW5nOwogCSAg cGNtLT5sYmVhcmluZyA9IDA7CiAJICBwY20tPmFzY2VudCA9IEZPTlRfQkFTRSAoZm9udCk7CiAJ ICBwY20tPmRlc2NlbnQgPSBGT05UX0RFU0NFTlQgKGZvbnQpOwogCX0KICAgICB9CiAKLQogICBp ZiAocGNtLT53aWR0aCA9PSAwICYmIChwY20tPnJiZWFyaW5nIC0gcGNtLT5sYmVhcmluZykgPT0g MCkKICAgICB7CiAgICAgICByZXR2YWwgPSBGQUxTRTsKQEAgLTEwMzgsMjkgKzEwNzMsMjUgQEAK ICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICBpZiAoKChmb250LT50bS50bVBpdGNoQW5kRmFt aWx5ICYgVE1QRl9GSVhFRF9QSVRDSCkgIT0gMCkKLSAgICAgICAgICAvKiBTb21lIGZvbnRzIChl ZyBEQkNTIGZvbnRzKSBhcmUgbWFya2VkIGFzIGZpeGVkIHdpZHRoIGV2ZW4KLSAgICAgICAgICAg ICB0aG91Z2ggdGhleSBjb250YWluIGNoYXJhY3RlcnMgb2YgZGlmZmVyZW50IHdpZHRocy4gKi8K LSAgICAgICAgICB8fCAoZm9udC0+dG0udG1NYXhDaGFyV2lkdGggIT0gZm9udC0+dG0udG1BdmVD aGFyV2lkdGgpKQotCXsKLQkgIC8qIEZvbnQgaXMgbm90IGZpeGVkIHBpdGNoLCBzbyBjYWNoZSBw ZXJfY2hhciBpbmZvIGZvciB0aGUKLSAgICAgICAgICAgICBBU0NJSSBjaGFyYWN0ZXJzLiAgSXQg d291bGQgYmUgbXVjaCBtb3JlIHdvcmssIGFuZCBwcm9iYWJseQotICAgICAgICAgICAgIG5vdCB3 b3J0aCBpdCwgdG8gY2FjaGUgb3RoZXIgY2hhcnMsIHNpbmNlIHdlIG1heSBjaGFuZ2UKLSAgICAg ICAgICAgICBiZXR3ZWVuIHVzaW5nIFVuaWNvZGUgYW5kIEFOU0kgdGV4dCBkcmF3aW5nIGZ1bmN0 aW9ucyBhdAotICAgICAgICAgICAgIHJ1bi10aW1lLiAgKi8KLQkgIGludCBpOwotCi0JICBmb250 LT5wZXJfY2hhciA9IHhtYWxsb2MgKDEyOCAqIHNpemVvZihYQ2hhclN0cnVjdCkpOwotCSAgZm9y IChpID0gMDsgaSA8IDEyODsgaSsrKQotCSAgICB7Ci0JICAgICAgY2hhcjJiID0gaTsKLQkgICAg ICB3MzJfbmF0aXZlX3Blcl9jaGFyX21ldHJpYyAoZm9udCwgJmNoYXIyYiwgQU5TSV9GT05ULAot CQkJCQkgICZmb250LT5wZXJfY2hhcltpXSk7Ci0JICAgIH0KLQl9CisgICAgICAvKiBDaGVjayBm b3IgZml4ZWQgd2lkdGgsIG5vdCB2ZWN0b3IgYW5kIG5vdCB0cnVldHlwZSBmb250cy4gKi8KKyAg ICAgIGlmICgoKGZvbnQtPnRtLnRtUGl0Y2hBbmRGYW1pbHkgJiAoVE1QRl9GSVhFRF9QSVRDSCB8 IFRNUEZfVkVDVE9SIHwgVE1QRl9UUlVFVFlQRSkpID09IDApCisgICAgICAgICAgJiYgKGZvbnQt PnRtLnRtTWF4Q2hhcldpZHRoID09IGZvbnQtPnRtLnRtQXZlQ2hhcldpZHRoKSkKKyAgICAgICAg eworICAgICAgICAgIHczMl9uYXRpdmVfcGVyX2NoYXJfbWV0cmljIChmb250LCAmY2hhcjJiLCBB TlNJX0ZPTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb250LT5t YXhfYm91bmRzKTsgICAKKyAgICAgICAgfQogICAgICAgZWxzZQotCXczMl9uYXRpdmVfcGVyX2No YXJfbWV0cmljIChmb250LCAmY2hhcjJiLCBBTlNJX0ZPTlQsCi0JCQkJICAgICZmb250LT5tYXhf Ym91bmRzKTsKKyAgICAgICAgeworICAgICAgICAgIGludCBpOworCisgICAgICAgICAgZm9udC0+ cGVyX2NoYXIgPSB4bWFsbG9jICgxMjggKiBzaXplb2YoWENoYXJTdHJ1Y3QpKTsKKyAgICAgICAg ICBmb3IgKGkgPSAwOyBpIDwgMTI4OyArK2kpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg IGNoYXIyYiA9IGk7CisgICAgICAgICAgICAgIHczMl9uYXRpdmVfcGVyX2NoYXJfbWV0cmljIChm b250LCAmY2hhcjJiLCBBTlNJX0ZPTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmZm9udC0+cGVyX2NoYXJbaV0pOworICAgICAgICAgICAgfQorICAgICAgICB9 CiAgICAgfQogfQogCkBAIC0xNDM3LDkgKzE0NjgsNDcgQEAKIHczMl9jb21wdXRlX2dseXBoX3N0 cmluZ19vdmVyaGFuZ3MgKHMpCiAgICAgIHN0cnVjdCBnbHlwaF9zdHJpbmcgKnM7CiB7Ci0gIC8q IFRPRE86IFdpbmRvd3MgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYSBtZXRob2QgZm9yCi0gICAg IGdldHRpbmcgdGhpcyBpbmZvIHdpdGhvdXQgZ2V0dGluZyB0aGUgQUJDIHdpZHRocyBmb3IgZWFj aAotICAgICBpbmRpdmlkdWFsIGNoYXJhY3RlciBhbmQgd29ya2luZyBpdCBvdXQgbWFudWFsbHku ICovCisgIGlmIChzLT5jbXAgPT0gTlVMTAorICAgICAgJiYgcy0+Zmlyc3RfZ2x5cGgtPnR5cGUg PT0gQ0hBUl9HTFlQSAorICAgICAgJiYgcy0+bmNoYXJzID4gMCkKKyAgICB7CisgICAgICBYRm9u dFN0cnVjdCAqZm9udCA9IHMtPmZvbnQ7CisgICAgICBjb25zdCBpbnQgICAgZm9udF90eXBlID0g cy0+Zmlyc3RfZ2x5cGgtPmZvbnRfdHlwZTsKKworICAgICAgd2NoYXJfdCAgKndzID0gcy0+Y2hh cjJiOworICAgICAgY29uc3QgaW50IG5jID0gcy0+bmNoYXJzOworICAgICAgaW50ICAgICAgIGks IHBvcywgbW4sIG14OworICAgICAgaWYgKG5jID09IDEpCisgICAgICAgIHsKKyAgICAgICAgICBY Q2hhclN0cnVjdCAqcGNtID0gdzMyX3Blcl9jaGFyX21ldHJpYyAoZm9udCwgd3MsIGZvbnRfdHlw ZSk7CisgICAgICAgICAgc2hvcnQgICAgICAgIHJiZWFyaW5nID0gcGNtLT5yYmVhcmluZzsKKyAg ICAgICAgICBpZiAocy0+ZmFjZS0+b3ZlcnN0cmlrZSkKKyAgICAgICAgICAgICsrcmJlYXJpbmc7 CisgICAgICAgICAgcy0+cmlnaHRfb3ZlcmhhbmcgPSByYmVhcmluZyA+IHBjbS0+d2lkdGggPyBy YmVhcmluZyAtIHBjbS0+d2lkdGggOiAwOworICAgICAgICAgIHMtPmxlZnRfb3ZlcmhhbmcgID0g cGNtLT5sYmVhcmluZyA8IDAgPyAtcGNtLT5sYmVhcmluZyA6IDA7CisgICAgICAgICAgcmV0dXJu OworICAgICAgICB9CisKKyAgICAgIHBvcyA9IG1uID0gbXggPSAwOworICAgICAgZm9yIChpID0g MDsgaSA8IG5jOyArK2ksICsrd3MpCisgICAgICAgIHsKKyAgICAgICAgICBYQ2hhclN0cnVjdCAq cGNtID0gdzMyX3Blcl9jaGFyX21ldHJpYyAoZm9udCwgd3MsIGZvbnRfdHlwZSk7CisKKyAgICAg ICAgICBjb25zdCBpbnQgcnAgPSBwb3MgKyBwY20tPnJiZWFyaW5nOworICAgICAgICAgIGNvbnN0 IGludCBscCA9IHBvcyArIHBjbS0+bGJlYXJpbmc7CisKKyAgICAgICAgICBpZiAocnAgPiBteCkg bXggPSBycDsKKyAgICAgICAgICBpZiAobHAgPCBtbikgbW4gPSBscDsKKworICAgICAgICAgIHBv cyArPSBwY20tPndpZHRoOworICAgICAgICB9CisKKyAgICAgIGlmIChzLT5mYWNlLT5vdmVyc3Ry aWtlKQorICAgICAgICAgICsrbXg7CisKKyAgICAgIHMtPnJpZ2h0X292ZXJoYW5nID0gbXggPiBw b3MgPyBteCAtIHBvcyA6IDA7CisgICAgICBzLT5sZWZ0X292ZXJoYW5nICA9IG1uIDwgMCA/IC1t biA6IDA7CisgICAgfQogfQogCiAKQEAgLTY0NzYsNyArNjU0NSw3IEBACiAgIHczMl9kZXN0cm95 X2ZyaW5nZV9iaXRtYXAsCiAgIHczMl9wZXJfY2hhcl9tZXRyaWMsCiAgIHczMl9lbmNvZGVfY2hh ciwKLSAgTlVMTCwgLyogdzMyX2NvbXB1dGVfZ2x5cGhfc3RyaW5nX292ZXJoYW5ncyAqLworICB3 MzJfY29tcHV0ZV9nbHlwaF9zdHJpbmdfb3ZlcmhhbmdzLAogICB4X2RyYXdfZ2x5cGhfc3RyaW5n LAogICB3MzJfZGVmaW5lX2ZyYW1lX2N1cnNvciwKICAgdzMyX2NsZWFyX2ZyYW1lX2FyZWEsCkBA IC02NTc0LDYgKzY2NDMsMTcgQEAKICAgICBVSU5UIHNtb290aGluZ190eXBlOwogICAgIEJPT0wg c21vb3RoaW5nX2VuYWJsZWQ7CiAKKyAgICBIQU5ETEUgZ2RpX2xpYiA9IExvYWRMaWJyYXJ5ICgi Z2RpMzIuZGxsIik7CisKKyNkZWZpbmUgTE9BRF9QUk9DKGxpYiwgZm4pIHBmbiMjZm4gPSAodm9p ZCAqKSBHZXRQcm9jQWRkcmVzcyAobGliLCAjZm4pCisKKyAgICBMT0FEX1BST0MgKGdkaV9saWIs IEdldENoYXJBQkNXaWR0aHNGbG9hdFcpOworICAgIExPQURfUFJPQyAoZ2RpX2xpYiwgR2V0Q2hh ckFCQ1dpZHRoc0Zsb2F0QSk7CisKKyN1bmRlZiBMT0FEX1BST0MKKworICAgIEZyZWVMaWJyYXJ5 IChnZGlfbGliKTsKKwogICAgIC8qIElmIHVzaW5nIHByb3BvcnRpb25hbCBzY3JvbGwgYmFycywg ZW5zdXJlIGhhbmRsZSBpcyBhdCBsZWFzdCA1IHBpeGVsczsKICAgICAgICBvdGhlcndpc2UgdXNl IHRoZSBmaXhlZCBoZWlnaHQuICAqLwogICAgIHZlcnRpY2FsX3Njcm9sbF9iYXJfbWluX2hhbmRs ZSA9IDU7CkBAIC02NjAwLDEwICs2NjgwLDEwIEBACiAgICAgICAgY29tcGVuc2F0ZSBmb3IgdGhl ICJzdWItcGl4ZWxzIiB0aGF0IGFyZSBub3QgY291bnRlZCBieSB0aGUKICAgICAgICBzeXN0ZW0g QVBJcy4gKi8KICAgICBjbGVhcnR5cGVfYWN0aXZlID0KLSAgICAgIFN5c3RlbVBhcmFtZXRlcnNJ bmZvIChTUElfR0VURk9OVFNNT09USElORywgMCwgJnNtb290aGluZ19lbmFibGVkLCAwKQotICAg ICAgJiYgc21vb3RoaW5nX2VuYWJsZWQKLSAgICAgICYmIFN5c3RlbVBhcmFtZXRlcnNJbmZvIChT UElfR0VURk9OVFNNT09USElOR1RZUEUsIDAsICZzbW9vdGhpbmdfdHlwZSwgMCkKLSAgICAgICYm IHNtb290aGluZ190eXBlID09IEZFX0ZPTlRTTU9PVEhJTkdDTEVBUlRZUEU7CisgICAgICAgIChT eXN0ZW1QYXJhbWV0ZXJzSW5mbyAoU1BJX0dFVEZPTlRTTU9PVEhJTkcsIDAsICZzbW9vdGhpbmdf ZW5hYmxlZCwgMCkKKyAgICAgICAgICYmIHNtb290aGluZ19lbmFibGVkCisgICAgICAgICAmJiBT eXN0ZW1QYXJhbWV0ZXJzSW5mbyAoU1BJX0dFVEZPTlRTTU9PVEhJTkdUWVBFLCAwLCAmc21vb3Ro aW5nX3R5cGUsIDApCisgICAgICAgICAmJiBzbW9vdGhpbmdfdHlwZSA9PSBGRV9GT05UU01PT1RI SU5HQ0xFQVJUWVBFKTsKICAgfQogfQogCkluZGV4OiB4ZGlzcC5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IC9zb3VyY2VzL2VtYWNzL2VtYWNzL3NyYy94ZGlzcC5jLHYKcmV0cmlldmluZyByZXZpc2lv biAxLjExNDkuMi4zMwpkaWZmIC11IC1yMS4xMTQ5LjIuMzMgeGRpc3AuYwotLS0geGRpc3AuYwky NiBBdWcgMjAwOCAxMToxMTo0NiAtMDAwMAkxLjExNDkuMi4zMworKysgeGRpc3AuYwkxOSBTZXAg MjAwOCAxNzoyMjowNiAtMDAwMApAQCAtMTkyMDcsOCArMTkyMDcsMTEgQEAKICAgICAgIGlmIChm b250ICAvKiArK0tGUzogU2hvdWxkIHRoaXMgYmUgZm9udF9pbmZvID8gICovCiAJICAmJiAocGNt ID0gcmlmLT5wZXJfY2hhcl9tZXRyaWMgKGZvbnQsICZjaGFyMmIsIGdseXBoLT5mb250X3R5cGUp KSkKIAl7Ci0JICBpZiAocGNtLT5yYmVhcmluZyA+IHBjbS0+d2lkdGgpCi0JICAgICpyaWdodCA9 IHBjbS0+cmJlYXJpbmcgLSBwY20tPndpZHRoOworICAgICAgICAgIHNob3J0IHJiZWFyaW5nID0g cGNtLT5yYmVhcmluZzsKKyAgICAgICAgICBpZiAoZmFjZS0+b3ZlcnN0cmlrZSkKKyAgICAgICAg ICAgICsrcmJlYXJpbmc7CisJICBpZiAocmJlYXJpbmcgPiBwY20tPndpZHRoKQorCSAgICAqcmln aHQgPSByYmVhcmluZyAtIHBjbS0+d2lkdGg7CiAJICBpZiAocGNtLT5sYmVhcmluZyA8IDApCiAJ ICAgICpsZWZ0ID0gLXBjbS0+bGJlYXJpbmc7CiAJfQpAQCAtMjA2MTcsNyArMjA2MjAsNyBAQAog CSAgICAgIC8qIElmIGNoYXJhY3RlcnMgd2l0aCBsYmVhcmluZyBvciByYmVhcmluZyBhcmUgZGlz cGxheWVkCiAJCSBpbiB0aGlzIGxpbmUsIHJlY29yZCB0aGF0IGZhY3QgaW4gYSBmbGFnIG9mIHRo ZQogCQkgZ2x5cGggcm93LiAgVGhpcyBpcyB1c2VkIHRvIG9wdGltaXplIFggb3V0cHV0IGNvZGUu ICAqLwotCSAgICAgIGlmIChwY20gJiYgKHBjbS0+bGJlYXJpbmcgPCAwIHx8IHBjbS0+cmJlYXJp bmcgPiBwY20tPndpZHRoKSkKKwkgICAgICBpZiAocGNtICYmIChwY20tPmxiZWFyaW5nIDwgMCB8 fCAoZmFjZS0+b3ZlcnN0cmlrZSA/IChwY20tPnJiZWFyaW5nICsgMSkgOiBwY20tPnJiZWFyaW5n KSA+IHBjbS0+d2lkdGgpKQogCQlpdC0+Z2x5cGhfcm93LT5jb250YWluc19vdmVybGFwcGluZ19n bHlwaHNfcCA9IDE7CiAJICAgIH0KIAl9CkBAIC0yMDc2Miw3ICsyMDc2NSw3IEBACiAJICAgICAg aXQtPnBoeXNfZGVzY2VudCA9IHBjbS0+ZGVzY2VudCAtIGJvZmY7CiAJICAgICAgaWYgKGl0LT5n bHlwaF9yb3cKIAkJICAmJiAocGNtLT5sYmVhcmluZyA8IDAKLQkJICAgICAgfHwgcGNtLT5yYmVh cmluZyA+IHBjbS0+d2lkdGgpKQorCQkgICAgICB8fCAoZmFjZS0+b3ZlcnN0cmlrZSA/IChwY20t PnJiZWFyaW5nICsgMSkgOiBwY20tPnJiZWFyaW5nKSA+IHBjbS0+d2lkdGgpKQogCQlpdC0+Z2x5 cGhfcm93LT5jb250YWluc19vdmVybGFwcGluZ19nbHlwaHNfcCA9IDE7CiAJICAgIH0KIAkgIGl0 LT5uZ2x5cGhzID0gMTsKSW5kZXg6IHh0ZXJtLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3NvdXJj ZXMvZW1hY3MvZW1hY3Mvc3JjL3h0ZXJtLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOTQzLjIu MTYKZGlmZiAtdSAtcjEuOTQzLjIuMTYgeHRlcm0uYwotLS0geHRlcm0uYwkyMSBBdWcgMjAwOCAx OTo0MDoyOSAtMDAwMAkxLjk0My4yLjE2CisrKyB4dGVybS5jCTE5IFNlcCAyMDA4IDE3OjIyOjA4 IC0wMDAwCkBAIC0xMTkxLDYgKzExOTEsOCBAQAogICAgICAgaW50IGRpcmVjdGlvbiwgZm9udF9h c2NlbnQsIGZvbnRfZGVzY2VudDsKICAgICAgIFhUZXh0RXh0ZW50czE2IChzLT5mb250LCBzLT5j aGFyMmIsIHMtPm5jaGFycywgJmRpcmVjdGlvbiwKIAkJICAgICAgJmZvbnRfYXNjZW50LCAmZm9u dF9kZXNjZW50LCAmY3MpOworICAgICAgaWYgKHMtPmZhY2UtPm92ZXJzdHJpa2UpCisgICAgICAg IGNzLnJiZWFyaW5nKys7CiAgICAgICBzLT5yaWdodF9vdmVyaGFuZyA9IGNzLnJiZWFyaW5nID4g Y3Mud2lkdGggPyBjcy5yYmVhcmluZyAtIGNzLndpZHRoIDogMDsKICAgICAgIHMtPmxlZnRfb3Zl cmhhbmcgPSBjcy5sYmVhcmluZyA8IDAgPyAtY3MubGJlYXJpbmcgOiAwOwogICAgIH0K ------_=_NextPart_001_01C91A81.8CC56F9C Content-Type: text/html; name="test.html" Content-Transfer-Encoding: base64 Content-Description: test.html Content-Disposition: attachment; filename="test.html" PEgyPldXVyBVTlRJVExFRCBIRUFERVI8L0gyPg0K ------_=_NextPart_001_01C91A81.8CC56F9C Content-Type: text/plain; name="test.txt" Content-Transfer-Encoding: base64 Content-Description: test.txt Content-Disposition: attachment; filename="test.txt" Q29udGVudC1UeXBlOiB0ZXh0L2VucmljaGVkDQpUZXh0LVdpZHRoOiA3MA0KDQp8PGJvbGQ+Vzwv Ym9sZD5kPGJvbGQ+PGl0YWxpYz5XPC9pdGFsaWM+PC9ib2xkPkwNCg0KfDxib2xkPlc8L2JvbGQ+ ZDxib2xkPjxpdGFsaWM+VzwvaXRhbGljPjwvYm9sZD5MDQoNCnxDZDxib2xkPjxpdGFsaWM+Vzwv aXRhbGljPjwvYm9sZD5MDQoNCnxDZDxib2xkPjxpdGFsaWM+VzwvaXRhbGljPjwvYm9sZD5MDQoN Cnw8Ym9sZD5XPC9ib2xkPmQ8Ym9sZD48aXRhbGljPlc8L2l0YWxpYz48L2JvbGQ+TA0KDQp8PGJv bGQ+VzwvYm9sZD5kPGJvbGQ+PGl0YWxpYz5XPC9pdGFsaWM+PC9ib2xkPkwNCg0KfENkPGJvbGQ+ PGl0YWxpYz5XPC9pdGFsaWM+PC9ib2xkPkwNCg0KfENkPGJvbGQ+PGl0YWxpYz5XPC9pdGFsaWM+ PC9ib2xkPkwNCg0KfDxib2xkPlc8L2JvbGQ+ZDxib2xkPjxpdGFsaWM+VzwvaXRhbGljPjwvYm9s ZD5MDQoNCnw8Ym9sZD5XPC9ib2xkPmQ8Ym9sZD48aXRhbGljPlc8L2l0YWxpYz48L2JvbGQ+TA0K DQp8Q2Q8Ym9sZD48aXRhbGljPlc8L2l0YWxpYz48L2JvbGQ+TA0KDQp8Q2Q8Ym9sZD48aXRhbGlj Plc8L2l0YWxpYz48L2JvbGQ+TA0KDQp8PGJvbGQ+VzwvYm9sZD5kPGJvbGQ+PGl0YWxpYz5XPC9p dGFsaWM+PC9ib2xkPkwNCg0KfDxib2xkPlc8L2JvbGQ+ZDxib2xkPjxpdGFsaWM+VzwvaXRhbGlj PjwvYm9sZD5MDQoNCnxDZDxib2xkPjxpdGFsaWM+VzwvaXRhbGljPjwvYm9sZD5MDQoNCnxDZDxi b2xkPjxpdGFsaWM+VzwvaXRhbGljPjwvYm9sZD5MDQoNCnw8Ym9sZD5XPC9ib2xkPmQ8Ym9sZD48 aXRhbGljPlc8L2l0YWxpYz48L2JvbGQ+TA0KDQp8PGJvbGQ+VzwvYm9sZD5kPGJvbGQ+PGl0YWxp Yz5XPC9pdGFsaWM+PC9ib2xkPkwNCg0KfENkPGJvbGQ+PGl0YWxpYz5XPC9pdGFsaWM+PC9ib2xk PkwNCg0KfENkPGJvbGQ+PGl0YWxpYz5XPC9pdGFsaWM+PC9ib2xkPkwNCg0KfDxib2xkPlc8L2Jv bGQ+ZDxib2xkPjxpdGFsaWM+VzwvaXRhbGljPjwvYm9sZD5MDQoNCnw8Ym9sZD5XPC9ib2xkPmQ8 Ym9sZD48aXRhbGljPlc8L2l0YWxpYz48L2JvbGQ+TA0KDQp8Q2Q8Ym9sZD48aXRhbGljPlc8L2l0 YWxpYz48L2JvbGQ+TA0KDQp8Q2Q8Ym9sZD48aXRhbGljPlc8L2l0YWxpYz48L2JvbGQ+TA0KDQp8 PGJvbGQ+VzwvYm9sZD5kPGJvbGQ+PGl0YWxpYz5XPC9pdGFsaWM+PC9ib2xkPkwNCg0KfDxib2xk Plc8L2JvbGQ+ZDxib2xkPjxpdGFsaWM+VzwvaXRhbGljPjwvYm9sZD5MDQoNCnxDZDxib2xkPjxp dGFsaWM+VzwvaXRhbGljPjwvYm9sZD5MDQoNCnxDZDxib2xkPjxpdGFsaWM+VzwvaXRhbGljPjwv Ym9sZD5MDQoNCg== ------_=_NextPart_001_01C91A81.8CC56F9C--