From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Barry OReilly Newsgroups: gmane.emacs.bugs Subject: bug#14281: 24.3; replace-match leaves point at wrong place Date: Tue, 14 May 2013 13:01:47 -0400 Message-ID: References: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=047d7b4723e8b8c77204dcb096a0 X-Trace: ger.gmane.org 1368550957 5090 80.91.229.3 (14 May 2013 17:02:37 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 14 May 2013 17:02:37 +0000 (UTC) Cc: 14281@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue May 14 19:02:37 2013 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 1UcIcV-0005KV-Su for geb-bug-gnu-emacs@m.gmane.org; Tue, 14 May 2013 19:02:36 +0200 Original-Received: from localhost ([::1]:39917 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UcIcV-0002uW-Hs for geb-bug-gnu-emacs@m.gmane.org; Tue, 14 May 2013 13:02:35 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:51462) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UcIcR-0002uB-5Y for bug-gnu-emacs@gnu.org; Tue, 14 May 2013 13:02:33 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UcIcO-0001ct-W7 for bug-gnu-emacs@gnu.org; Tue, 14 May 2013 13:02:31 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:36162) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UcIcO-0001ck-Rv for bug-gnu-emacs@gnu.org; Tue, 14 May 2013 13:02:28 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1UcIcv-0002A1-RB for bug-gnu-emacs@gnu.org; Tue, 14 May 2013 13:03:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Barry OReilly Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 14 May 2013 17:03:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 14281 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 14281-submit@debbugs.gnu.org id=B14281.13685509458203 (code B ref 14281); Tue, 14 May 2013 17:03:01 +0000 Original-Received: (at 14281) by debbugs.gnu.org; 14 May 2013 17:02:25 +0000 Original-Received: from localhost ([127.0.0.1]:40271 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UcIcK-00028D-U5 for submit@debbugs.gnu.org; Tue, 14 May 2013 13:02:25 -0400 Original-Received: from mail-oa0-f46.google.com ([209.85.219.46]:47917) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UcIcI-000283-ED for 14281@debbugs.gnu.org; Tue, 14 May 2013 13:02:23 -0400 Original-Received: by mail-oa0-f46.google.com with SMTP id h2so930785oag.33 for <14281@debbugs.gnu.org>; Tue, 14 May 2013 10:01:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:x-received:in-reply-to:references:date:message-id :subject:from:cc:content-type; bh=ziuY1KxyBqxFnoSV19+3EK2DcPYOtFzIxsb3/MR/c4w=; b=ElKNJw+k//qI2bz2GdZJLQiwQVMqPJGOrTpIYyVS/5gcNhqWgtoE6Oj9Nk3KROYNv9 KGbakgsM1rSmH86bPPnkKwr0NBE7w4asx0XlfO7nm4rZUvrZ4ETfTaSJY3TB6Rgxz61f GW0SnR/HzOMNRZM2ca3C2QZ98nLV9KYhShHJbLqe0HUvbBwiEZhC4McfNAHtk1KOIps7 O4KQktOeVyPCd2ZWHimucAxezK+QZ2DnFo2RVF4l32BLiqhKLJtoruv9glfdiqnHrTRw Ws24AAS6yFvoDnJWtNzgZbsi5rL2Hh0lfSihO/OJY9otfCadei++iGy0GF5Axr05SOvU aqUQ== X-Received: by 10.60.131.209 with SMTP id oo17mr16941223oeb.14.1368550907888; Tue, 14 May 2013 10:01:47 -0700 (PDT) Original-Received: by 10.76.93.68 with HTTP; Tue, 14 May 2013 10:01:47 -0700 (PDT) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 140.186.70.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:74251 Archived-At: --047d7b4723e8b8c77204dcb096a0 Content-Type: multipart/alternative; boundary=047d7b4723e8b8c76f04dcb0969e --047d7b4723e8b8c76f04dcb0969e Content-Type: text/plain; charset=ISO-8859-1 > Can you show us the offenders? Offenders and status: semantic-change-function Fixed in CEDET mainline evil-ex-search-update-pattern Fixed in Evil mainline evil-track-last-insertion See below Undo tree Haven't investigated I'm not so sure search_regs are saved and restored through save-match-data. I have this advice: (defadvice evil-track-last-insertion (around my-advice-evil-track-last-insertion activate) (my-msg "DEBUG: 01 evil-track-last-insertion match-data=%s match-beginning=%s" (match-data) (match-beginning 0)) (save-match-data ad-do-it) (my-msg "DEBUG: 02 evil-track-last-insertion match-data=%s match-beginning=%s" (match-data) (match-beginning 0)) ) Note: my-msg is like message but prefixes the time. When I inserted a new line in a .cc file, I get: 2013-05-14T12:51:39.010590 DEBUG: 01 evil-track-last-insertion match-data=(# # # #) match-beginning=0 2013-05-14T12:51:39.020153 DEBUG: 02 evil-track-last-insertion match-data=(# # # #) match-beginning=1 ad-handle-definition: `semantic-change-function' got redefined 2013-05-14T12:51:39.023610 DEBUG: 01 semantic-change-function match-beginning=1 2013-05-14T12:51:39.025341 DEBUG: 02 semantic-change-function match-beginning=1 2013-05-14T12:51:39.025525 DEBUG: 01 c-after-change match-beginning=1 2013-05-14T12:51:39.026920 DEBUG: 02 c-after-change match-beginning=1 2013-05-14T12:51:39.027110 DEBUG: 01 jit-lock-after-change match-beginning=1 2013-05-14T12:51:39.027319 DEBUG: 02 jit-lock-after-change match-beginning=1 newline: Match data corrupted in after-change-functions. Consider using save-match-data In this case, the change of match-beginning from 0 to 1 in evil-track-last-insertion causes the error. For reference, I am currently using the attached patch, which incorporates your feedback. --047d7b4723e8b8c76f04dcb0969e Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable > Can you show us the offenders?

Offenders and status:
=A0=A0 = semantic-change-function=A0=A0=A0=A0=A0 Fixed in CEDET mainline
=A0=A0 e= vil-ex-search-update-pattern Fixed in Evil mainline
=A0=A0 evil-track-la= st-insertion=A0=A0=A0=A0 See below
=A0=A0 Undo tree=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0 Haven't investigated

I'm not so sure search_regs are sav= ed and restored through save-match-data. I have this advice:

(defadv= ice evil-track-last-insertion (around my-advice-evil-track-last-insertion a= ctivate)
=A0 (my-msg "DEBUG: 01 evil-track-last-insertion match-data=3D%s match= -beginning=3D%s" (match-data) (match-beginning 0))
=A0 (save-match= -data ad-do-it)
=A0 (my-msg "DEBUG: 02 evil-track-last-insertion ma= tch-data=3D%s match-beginning=3D%s" (match-data) (match-beginning 0)) =
=A0 )

Note: my-msg is like message but prefixes the time.

Whe= n I inserted a new line in a .cc file, I get:

2013-05-14T12:51:39.01= 0590 DEBUG: 01 evil-track-last-insertion match-data=3D(#<marker at 1 in = FileNameRedacted.cc> #<marker at 5 in FileNameRedacted.cc> #<ma= rker at 4 in FileNameRedacted.cc> #<marker at 5 in FileNameRedacted.c= c>) match-beginning=3D0
2013-05-14T12:51:39.020153 DEBUG: 02 evil-track-last-insertion match-data= =3D(#<marker at 1 in FileNameRedacted.cc> #<marker at 5 in FileNam= eRedacted.cc> #<marker at 4 in FileNameRedacted.cc> #<marker at= 5 in FileNameRedacted.cc>) match-beginning=3D1
ad-handle-definition: `semantic-change-function' got redefined
2013-= 05-14T12:51:39.023610 DEBUG: 01 semantic-change-function match-beginning=3D= 1
2013-05-14T12:51:39.025341 DEBUG: 02 semantic-change-function match-be= ginning=3D1
2013-05-14T12:51:39.025525 DEBUG: 01 c-after-change match-beginning=3D1
= 2013-05-14T12:51:39.026920 DEBUG: 02 c-after-change match-beginning=3D1
= 2013-05-14T12:51:39.027110 DEBUG: 01 jit-lock-after-change match-beginning= =3D1
2013-05-14T12:51:39.027319 DEBUG: 02 jit-lock-after-change match-beginning= =3D1
newline: Match data corrupted in after-change-functions. Consider u= sing save-match-data

In this case, the change of match-beginning fro= m 0 to 1 in evil-track-last-insertion causes the error.

For reference, I am currently using the attached patch, which incorpora= tes your feedback.

--047d7b4723e8b8c76f04dcb0969e-- --047d7b4723e8b8c77204dcb096a0 Content-Type: application/octet-stream; name="check-match-beginning.diff" Content-Disposition: attachment; filename="check-match-beginning.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hgpbtt7m0 ZGlmZiAtLWdpdCBhL3NyYy9pbnNkZWwuYyBiL3NyYy9pbnNkZWwuYwppbmRleCA4MDI5MjkxLi5k YjIxNDdmIDEwMDY0NAotLS0gYS9zcmMvaW5zZGVsLmMKKysrIGIvc3JjL2luc2RlbC5jCkBAIC0y OCw2ICsyOCw3IEBAIGFsb25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KICNpbmNsdWRlICJidWZmZXIuaCIKICNpbmNsdWRl ICJ3aW5kb3cuaCIKICNpbmNsdWRlICJibG9ja2lucHV0LmgiCisjaW5jbHVkZSAicmVnZXguaCIK ICNpbmNsdWRlICJyZWdpb24tY2FjaGUuaCIKIAogc3RhdGljIHZvaWQgaW5zZXJ0X2Zyb21fc3Ry aW5nXzEgKExpc3BfT2JqZWN0LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCwgcHRyZGlmZl90LApAQCAt MjAzNCw2ICsyMDM1LDE0IEBAIHNpZ25hbF9hZnRlcl9jaGFuZ2UgKHB0cmRpZmZfdCBjaGFycG9z LCBwdHJkaWZmX3QgbGVuZGVsLCBwdHJkaWZmX3QgbGVuaW5zKQogCiAgIHNwZWNiaW5kIChRaW5o aWJpdF9tb2RpZmljYXRpb25faG9va3MsIFF0KTsKIAorICAvKiBDaGFuZ2UgaG9vayBmdW5jdGlv bnMgYXJlIGV4cGVjdGVkIHRvIHVzZSBzYXZlLW1hdGNoLWRhdGEgaWYgdXNpbmcgcmVnZXhwcy4K KyAgICAgVGhpcyBjaGVja3MgbWF0Y2gtYmVnaW5uaW5nIHRvIGRldGVjdCBjYXNlcyBvZiBob29r cyBjb3JydXB0aW5nIG1hdGNoLWRhdGEuCisgICAgIFRPRE86IEltcGxlbWVudCBpbiBzaWduYWxf YmVmb3JlX2NoYW5nZSB0b28KKyAgICovCisgIExpc3BfT2JqZWN0IG1hdGNoX2JlZ2lubmluZyA9 IDAgPCBzZWFyY2hfcmVncy5udW1fcmVncyA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1ha2VfbnVtYmVyIChzZWFyY2hfcmVncy5zdGFydFswXSkgOgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRbmlsOworCiAgIGlmICghTklMUCAoVmFmdGVyX2NoYW5nZV9mdW5j dGlvbnMpKQogICAgIHsKICAgICAgIExpc3BfT2JqZWN0IGFyZ3NbNF07CkBAIC0yMDUzLDYgKzIw NjIsMTIgQEAgc2lnbmFsX2FmdGVyX2NoYW5nZSAocHRyZGlmZl90IGNoYXJwb3MsIHB0cmRpZmZf dCBsZW5kZWwsIHB0cmRpZmZfdCBsZW5pbnMpCiAgICAgICBYU0VUQ0RSIChydm9lX2FyZywgUXQp OwogICAgIH0KIAorICBpZiAoICEgRVEgKG1hdGNoX2JlZ2lubmluZywgMCA8IHNlYXJjaF9yZWdz Lm51bV9yZWdzID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VfbnVtYmVyIChz ZWFyY2hfcmVncy5zdGFydFswXSkgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUW5p bCkpCisgICAgZXJyb3IgKCJNYXRjaCBkYXRhIGNvcnJ1cHRlZCBpbiBhZnRlci1jaGFuZ2UtZnVu Y3Rpb25zLiAiCisgICAgICAgICAgICJDb25zaWRlciB1c2luZyBzYXZlLW1hdGNoLWRhdGEiKTsK KwogICBpZiAoYnVmZmVyX2hhc19vdmVybGF5cyAoKSkKICAgICByZXBvcnRfb3ZlcmxheV9tb2Rp ZmljYXRpb24gKG1ha2VfbnVtYmVyIChjaGFycG9zKSwKIAkJCQkgbWFrZV9udW1iZXIgKGNoYXJw b3MgKyBsZW5pbnMpLApAQCAtMjA2MSwxMiArMjA3NiwyNCBAQCBzaWduYWxfYWZ0ZXJfY2hhbmdl IChwdHJkaWZmX3QgY2hhcnBvcywgcHRyZGlmZl90IGxlbmRlbCwgcHRyZGlmZl90IGxlbmlucykK IAkJCQkgbWFrZV9udW1iZXIgKGNoYXJwb3MgKyBsZW5pbnMpLAogCQkJCSBtYWtlX251bWJlciAo bGVuZGVsKSk7CiAKKyAgaWYgKCAhIEVRIChtYXRjaF9iZWdpbm5pbmcsIDAgPCBzZWFyY2hfcmVn cy5udW1fcmVncyA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlX251bWJlciAo c2VhcmNoX3JlZ3Muc3RhcnRbMF0pIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFu aWwpKQorICAgIGVycm9yICgiTWF0Y2ggZGF0YSBjb3JydXB0ZWQgaW4gb3ZlcmxheSBtb2RpZmlj YXRpb24gaG9va3MuICIKKyAgICAgICAgICAgIkNvbnNpZGVyIHVzaW5nIHNhdmUtbWF0Y2gtZGF0 YSIpOworCiAgIC8qIEFmdGVyIGFuIGluc2VydGlvbiwgY2FsbCB0aGUgdGV4dCBwcm9wZXJ0aWVz CiAgICAgIGluc2VydC1iZWhpbmQtaG9va3Mgb3IgaW5zZXJ0LWluLWZyb250LWhvb2tzLiAgKi8K ICAgaWYgKGxlbmRlbCA9PSAwKQogICAgIHJlcG9ydF9pbnRlcnZhbF9tb2RpZmljYXRpb24gKG1h a2VfbnVtYmVyIChjaGFycG9zKSwKIAkJCQkgIG1ha2VfbnVtYmVyIChjaGFycG9zICsgbGVuaW5z KSk7CiAKKyAgaWYgKCAhIEVRIChtYXRjaF9iZWdpbm5pbmcsIDAgPCBzZWFyY2hfcmVncy5udW1f cmVncyA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlX251bWJlciAoc2VhcmNo X3JlZ3Muc3RhcnRbMF0pIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFuaWwpKQor ICAgIGVycm9yICgiTWF0Y2ggZGF0YSBjb3JydXB0ZWQgaW4gdGV4dCBwcm9wZXJ0eSBpbnNlcnRp b24gaG9va3MuICIKKyAgICAgICAgICAgIkNvbnNpZGVyIHVzaW5nIHNhdmUtbWF0Y2gtZGF0YSIp OworCiAgIHVuYmluZF90byAoY291bnQsIFFuaWwpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvcmVn ZXguaCBiL3NyYy9yZWdleC5oCmluZGV4IDhmZTdiYTEuLmI0ODMzZGMgMTAwNjQ0Ci0tLSBhL3Ny Yy9yZWdleC5oCisrKyBiL3NyYy9yZWdleC5oCkBAIC00MjksNiArNDI5LDI0IEBAIHN0cnVjdCBy ZV9yZWdpc3RlcnMKICAgcmVnb2ZmX3QgKmVuZDsKIH07CiAKKy8qIEV2ZXJ5IGNhbGwgdG8gcmVf bWF0Y2gsIGV0Yy4sIG11c3QgcGFzcyAmc2VhcmNoX3JlZ3MgYXMgdGhlIHJlZ3MKKyAgIGFyZ3Vt ZW50IHVubGVzcyB5b3UgY2FuIHNob3cgaXQgaXMgdW5uZWNlc3NhcnkgKGkuZS4sIGlmIHJlX21h dGNoCisgICBpcyBjZXJ0YWlubHkgZ29pbmcgdG8gYmUgY2FsbGVkIGFnYWluIGJlZm9yZSByZWdp b24tYXJvdW5kLW1hdGNoCisgICBjYW4gYmUgY2FsbGVkKS4KKworICAgU2luY2UgdGhlIHJlZ2lz dGVycyBhcmUgbm93IGR5bmFtaWNhbGx5IGFsbG9jYXRlZCwgd2UgbmVlZCB0byBtYWtlCisgICBz dXJlIG5vdCB0byByZWZlciB0byB0aGUgTnRoIHJlZ2lzdGVyIGJlZm9yZSBjaGVja2luZyB0aGF0 IGl0IGhhcworICAgYmVlbiBhbGxvY2F0ZWQgYnkgY2hlY2tpbmcgc2VhcmNoX3JlZ3MubnVtX3Jl Z3MuCisKKyAgIFRoZSByZWdleCBjb2RlIGtlZXBzIHRyYWNrIG9mIHdoZXRoZXIgaXQgaGFzIGFs bG9jYXRlZCB0aGUgc2VhcmNoCisgICBidWZmZXIgdXNpbmcgYml0cyBpbiB0aGUgcmVfcGF0dGVy bl9idWZmZXIuICBUaGlzIG1lYW5zIHRoYXQgd2hlbmV2ZXIKKyAgIHlvdSBjb21waWxlIGEgbmV3 IHBhdHRlcm4sIGl0IGNvbXBsZXRlbHkgZm9yZ2V0cyB3aGV0aGVyIGl0IGhhcworICAgYWxsb2Nh dGVkIGFueSByZWdpc3RlcnMsIGFuZCB3aWxsIGFsbG9jYXRlIG5ldyByZWdpc3RlcnMgdGhlIG5l eHQKKyAgIHRpbWUgeW91IGNhbGwgYSBzZWFyY2hpbmcgb3IgbWF0Y2hpbmcgZnVuY3Rpb24uICBU aGVyZWZvcmUsIHdlIG5lZWQKKyAgIHRvIGNhbGwgcmVfc2V0X3JlZ2lzdGVycyBhZnRlciBjb21w aWxpbmcgYSBuZXcgcGF0dGVybiBvciBhZnRlcgorICAgc2V0dGluZyB0aGUgbWF0Y2ggcmVnaXN0 ZXJzLCBzbyB0aGF0IHRoZSByZWdleCBmdW5jdGlvbnMgd2lsbCBiZQorICAgYWJsZSB0byBmcmVl IG9yIHJlLWFsbG9jYXRlIGl0IHByb3Blcmx5LiAgKi8KK2V4dGVybiBzdHJ1Y3QgcmVfcmVnaXN0 ZXJzIHNlYXJjaF9yZWdzOwogCiAvKiBJZiBgcmVnc19hbGxvY2F0ZWQnIGlzIFJFR1NfVU5BTExP Q0FURUQgaW4gdGhlIHBhdHRlcm4gYnVmZmVyLAogICAgYHJlX21hdGNoXzInIHJldHVybnMgaW5m b3JtYXRpb24gYWJvdXQgYXQgbGVhc3QgdGhpcyBtYW55IHJlZ2lzdGVycwpkaWZmIC0tZ2l0IGEv c3JjL3NlYXJjaC5jIGIvc3JjL3NlYXJjaC5jCmluZGV4IGVhMzYxMzMuLmZmYmVhMjggMTAwNjQ0 Ci0tLSBhL3NyYy9zZWFyY2guYworKysgYi9zcmMvc2VhcmNoLmMKQEAgLTU5LDI1ICs1OSw3IEBA IHN0YXRpYyBzdHJ1Y3QgcmVnZXhwX2NhY2hlIHNlYXJjaGJ1ZnNbUkVHRVhQX0NBQ0hFX1NJWkVd OwogLyogVGhlIGhlYWQgb2YgdGhlIGxpbmtlZCBsaXN0OyBwb2ludHMgdG8gdGhlIG1vc3QgcmVj ZW50bHkgdXNlZCBidWZmZXIuICAqLwogc3RhdGljIHN0cnVjdCByZWdleHBfY2FjaGUgKnNlYXJj aGJ1Zl9oZWFkOwogCi0KLS8qIEV2ZXJ5IGNhbGwgdG8gcmVfbWF0Y2gsIGV0Yy4sIG11c3QgcGFz cyAmc2VhcmNoX3JlZ3MgYXMgdGhlIHJlZ3MKLSAgIGFyZ3VtZW50IHVubGVzcyB5b3UgY2FuIHNo b3cgaXQgaXMgdW5uZWNlc3NhcnkgKGkuZS4sIGlmIHJlX21hdGNoCi0gICBpcyBjZXJ0YWlubHkg Z29pbmcgdG8gYmUgY2FsbGVkIGFnYWluIGJlZm9yZSByZWdpb24tYXJvdW5kLW1hdGNoCi0gICBj YW4gYmUgY2FsbGVkKS4KLQotICAgU2luY2UgdGhlIHJlZ2lzdGVycyBhcmUgbm93IGR5bmFtaWNh bGx5IGFsbG9jYXRlZCwgd2UgbmVlZCB0byBtYWtlCi0gICBzdXJlIG5vdCB0byByZWZlciB0byB0 aGUgTnRoIHJlZ2lzdGVyIGJlZm9yZSBjaGVja2luZyB0aGF0IGl0IGhhcwotICAgYmVlbiBhbGxv Y2F0ZWQgYnkgY2hlY2tpbmcgc2VhcmNoX3JlZ3MubnVtX3JlZ3MuCi0KLSAgIFRoZSByZWdleCBj b2RlIGtlZXBzIHRyYWNrIG9mIHdoZXRoZXIgaXQgaGFzIGFsbG9jYXRlZCB0aGUgc2VhcmNoCi0g ICBidWZmZXIgdXNpbmcgYml0cyBpbiB0aGUgcmVfcGF0dGVybl9idWZmZXIuICBUaGlzIG1lYW5z IHRoYXQgd2hlbmV2ZXIKLSAgIHlvdSBjb21waWxlIGEgbmV3IHBhdHRlcm4sIGl0IGNvbXBsZXRl bHkgZm9yZ2V0cyB3aGV0aGVyIGl0IGhhcwotICAgYWxsb2NhdGVkIGFueSByZWdpc3RlcnMsIGFu ZCB3aWxsIGFsbG9jYXRlIG5ldyByZWdpc3RlcnMgdGhlIG5leHQKLSAgIHRpbWUgeW91IGNhbGwg YSBzZWFyY2hpbmcgb3IgbWF0Y2hpbmcgZnVuY3Rpb24uICBUaGVyZWZvcmUsIHdlIG5lZWQKLSAg IHRvIGNhbGwgcmVfc2V0X3JlZ2lzdGVycyBhZnRlciBjb21waWxpbmcgYSBuZXcgcGF0dGVybiBv ciBhZnRlcgotICAgc2V0dGluZyB0aGUgbWF0Y2ggcmVnaXN0ZXJzLCBzbyB0aGF0IHRoZSByZWdl eCBmdW5jdGlvbnMgd2lsbCBiZQotICAgYWJsZSB0byBmcmVlIG9yIHJlLWFsbG9jYXRlIGl0IHBy b3Blcmx5LiAgKi8KLXN0YXRpYyBzdHJ1Y3QgcmVfcmVnaXN0ZXJzIHNlYXJjaF9yZWdzOworc3Ry dWN0IHJlX3JlZ2lzdGVycyBzZWFyY2hfcmVnczsKIAogLyogVGhlIGJ1ZmZlciBpbiB3aGljaCB0 aGUgbGFzdCBzZWFyY2ggd2FzIHBlcmZvcm1lZCwgb3IKICAgIFF0IGlmIHRoZSBsYXN0IHNlYXJj aCB3YXMgZG9uZSBpbiBhIHN0cmluZzsK --047d7b4723e8b8c77204dcb096a0--