From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Gregory Heytings Newsgroups: gmane.emacs.bugs Subject: bug#56682: feature/improved-locked-narrowing 9dee6df39c: Reworked locked narrowing. Date: Tue, 09 May 2023 21:48:42 +0000 Message-ID: <24b4118b217952fab8dd@heytings.org> References: <166939872890.18950.12581667269687468681@vcs2.savannah.gnu.org> <0f053182b02103503c26@heytings.org> <83pmaccnz7.fsf@gnu.org> <0f053182b04357300cb1@heytings.org> <83lel0chku.fsf@gnu.org> <0f053182b00a59a41caa@heytings.org> <835yc3cdhk.fsf@gnu.org> <9e9ed8043fc8bfe49bfe@heytings.org> <83h6vnaukn.fsf@gnu.org> <9e9ed8043f4ff9316461@heytings.org> <83k00exj56.fsf@gnu.org> <10ececa33f0a4af46fd2@heytings.org> <83edp3zwjk.fsf@gnu.org> <83r0t3y6yy.fsf@gnu.org> <83lejby3nk.fsf@gnu.org> <83h6tzy19k.fsf@gnu.org> <83bkk6yicv.fsf@gnu.org> <83jzxoll20.fsf@gnu.org> <221c67168567a20a89c1@heytings.org> <834joqiyuq.fsf@gnu.org> <83mt2igelb.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="FlbA6aq5CO" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="9471"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 56682@debbugs.gnu.org, monnier@iro.umontreal.ca To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue May 09 23:49:17 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pwVCu-0002GF-NU for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 09 May 2023 23:49:16 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pwVCh-0003Hq-Ug; Tue, 09 May 2023 17:49:03 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pwVCg-0003Hf-98 for bug-gnu-emacs@gnu.org; Tue, 09 May 2023 17:49:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pwVCg-0001Wc-19 for bug-gnu-emacs@gnu.org; Tue, 09 May 2023 17:49:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pwVCf-0000VL-Lv for bug-gnu-emacs@gnu.org; Tue, 09 May 2023 17:49:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Gregory Heytings Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 09 May 2023 21:49:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 56682 X-GNU-PR-Package: emacs Original-Received: via spool by 56682-submit@debbugs.gnu.org id=B56682.16836689301921 (code B ref 56682); Tue, 09 May 2023 21:49:01 +0000 Original-Received: (at 56682) by debbugs.gnu.org; 9 May 2023 21:48:50 +0000 Original-Received: from localhost ([127.0.0.1]:44656 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pwVCU-0000Uu-6D for submit@debbugs.gnu.org; Tue, 09 May 2023 17:48:50 -0400 Original-Received: from heytings.org ([95.142.160.155]:55448) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pwVCO-0000Ug-BS for 56682@debbugs.gnu.org; Tue, 09 May 2023 17:48:48 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1683668923; bh=Dfu9armZk2oKiBUwiy3k8kAO15wy/qgJVazoHqQS/6M=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=posXpXn2N81ogy+mXBwUTojRd18MkTyQiQ9GhIpirWTSHp5Y8DbEqC1jD2aEHMKa3 +WhypXgJomm8dMaHN4GnXBABsVqvpegqqCyO3Klyuph9qyep/soi3FEBzp0LvDnxRe xqDPKfRqR64PK44XpofygrpQkUdgW1PW85Mg6ZAmYXKCgh4c66tLOQ/X+tJTF2idjL Gt7gJ4+icMX28sdlFoxbwOhiLkfQSb8RCX/6SMb4MM337ENkZncYRwOCBYxABSuGl9 FaOPXhj9n9EjrR7ZNsE/KB7Qn80IQ7/jAWBHbeTYGgLKDvnoDGlLZkgmH8rpJ4Q1n/ 6WQos0fV9T6kA== In-Reply-To: <83mt2igelb.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list 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-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:261452 Archived-At: --FlbA6aq5CO Content-Type: text/plain; charset=us-ascii; format=flowed >>>> + struct Lisp_Marker *begv >>>> + = labeled_restrictions_get_bound (buf, true, true); >>>> + struct Lisp_Marker *zv >>>> + = labeled_restrictions_get_bound (buf, false, true); >>> >>> Why the strange design of having a function return a pointer to a >>> 'struct Lisp_Marker'? why not return the marker itself instead? (I >>> realize that this was so in the code we already have, but I still >>> don't understand why you did it that way, and prefer that function to >>> return a marker instead.) >> >> Good question. You mean that it would have been better to return a >> Lisp_Object, right? I don't recall exactly, I think it was because in >> the calls to SET_BUF_BEGV_BOTH/SET_BUF_ZV_BOTH (which are the only >> places where the return value of labeled_restrictions_get_bound are >> used) one can use the pointer to a struct Lisp_Marker immediately, >> whereas a call to XMARKER would have been necessary if a Lisp_Object >> had been used. > > I'd prefer to use a marker there, but that can be a separate changeset. > Can you confirm that the attached patch is what you would prefer? IMHO it is better/clearer to have a single call to XMARKER in 'labeled_restrictions_get_bound', instead of having to repeat it everywhere its return value is used. The price is indeed that the signature of that (internal) function is unusual. (Note that we cannot wrap the calls to 'labeled_restrictions_get_bound' in a call to XMARKER, because it can return nil.) --FlbA6aq5CO Content-Type: text/x-diff; name=editfns.patch Content-Transfer-Encoding: base64 Content-ID: <24b4118b21297a7c61fc@heytings.org> Content-Disposition: attachment; filename=editfns.patch ZGlmZiAtLWdpdCBhL3NyYy9lZGl0Zm5zLmMgYi9zcmMvZWRpdGZucy5jDQpp bmRleCA0YzViNjkxZWI1MC4uOWQzNTQ5MWE2ZDggMTAwNjQ0DQotLS0gYS9z cmMvZWRpdGZucy5jDQorKysgYi9zcmMvZWRpdGZucy5jDQpAQCAtMjY4Nywy MCArMjY4NywxOSBAQCBsYWJlbGVkX3Jlc3RyaWN0aW9uc19yZW1vdmUgKExp c3BfT2JqZWN0IGJ1ZikNCiB9DQogDQogLyogUmV0cmlldmUgb25lIG9mIHRo ZSBsYWJlbGVkIHJlc3RyaWN0aW9uIGJvdW5kcyBpbiBCVUYgZnJvbSB0aGUN Ci0gICBsYWJlbGVkX3Jlc3RyaWN0aW9ucyBhbGlzdCwgYXMgYSBwb2ludGVy IHRvIGEgc3RydWN0IExpc3BfTWFya2VyLA0KLSAgIG9yIHJldHVybiBOVUxM IGlmIEJVRiBpcyBub3QgaW4gbGFiZWxlZF9yZXN0cmljdGlvbnMgb3IgaXMg YSBraWxsZWQNCi0gICBidWZmZXIuICBXaGVuIE9VVEVSTU9TVCBpcyB0cnVl LCB0aGUgcmVzdHJpY3Rpb24gYm91bmRzIHRoYXQgd2VyZQ0KLSAgIGN1cnJl bnQgd2hlbiB0aGUgZmlyc3QgbGFiZWxlZCByZXN0cmljdGlvbiB3YXMgZW50 ZXJlZCBhcmUNCi0gICByZXR1cm5lZC4gIE90aGVyd2lzZSB0aGUgYm91bmRz IG9mIHRoZSBpbm5lcm1vc3QgbGFiZWxlZA0KLSAgIHJlc3RyaWN0aW9uIGFy ZSByZXR1cm5lZC4gICovDQotc3RhdGljIHN0cnVjdCBMaXNwX01hcmtlciAq DQorICAgbGFiZWxlZF9yZXN0cmljdGlvbnMgYWxpc3QsIGFzIGEgbWFya2Vy LCBvciByZXR1cm4gbmlsIGlmIEJVRiBpcw0KKyAgIG5vdCBpbiBsYWJlbGVk X3Jlc3RyaWN0aW9ucyBvciBpcyBhIGtpbGxlZCBidWZmZXIuICBXaGVuIE9V VEVSTU9TVA0KKyAgIGlzIHRydWUsIHRoZSByZXN0cmljdGlvbiBib3VuZHMg dGhhdCB3ZXJlIGN1cnJlbnQgd2hlbiB0aGUgZmlyc3QNCisgICBsYWJlbGVk IHJlc3RyaWN0aW9uIHdhcyBlbnRlcmVkIGFyZSByZXR1cm5lZC4gIE90aGVy d2lzZSB0aGUgYm91bmRzDQorICAgb2YgdGhlIGlubmVybW9zdCBsYWJlbGVk IHJlc3RyaWN0aW9uIGFyZSByZXR1cm5lZC4gICovDQorc3RhdGljIExpc3Bf T2JqZWN0DQogbGFiZWxlZF9yZXN0cmljdGlvbnNfZ2V0X2JvdW5kIChMaXNw X09iamVjdCBidWYsIGJvb2wgYmVndiwgYm9vbCBvdXRlcm1vc3QpDQogew0K ICAgaWYgKE5JTFAgKEZidWZmZXJfbGl2ZV9wIChidWYpKSkNCi0gICAgcmV0 dXJuIE5VTEw7DQorICAgIHJldHVybiBRbmlsOw0KICAgTGlzcF9PYmplY3Qg cmVzdHJpY3Rpb25zID0gYXNzcV9ub19xdWl0IChidWYsIGxhYmVsZWRfcmVz dHJpY3Rpb25zKTsNCiAgIGlmIChOSUxQIChyZXN0cmljdGlvbnMpKQ0KLSAg ICByZXR1cm4gTlVMTDsNCisgICAgcmV0dXJuIFFuaWw7DQogICByZXN0cmlj dGlvbnMgPSBYQ0FSIChYQ0RSIChyZXN0cmljdGlvbnMpKTsNCiAgIExpc3Bf T2JqZWN0IGJvdW5kcw0KICAgICA9IG91dGVybW9zdA0KQEAgLTI3MDksNyAr MjcwOCw3IEBAIGxhYmVsZWRfcmVzdHJpY3Rpb25zX2dldF9ib3VuZCAoTGlz cF9PYmplY3QgYnVmLCBib29sIGJlZ3YsIGJvb2wgb3V0ZXJtb3N0KQ0KICAg ZWFzc2VydCAoISBOSUxQIChib3VuZHMpKTsNCiAgIExpc3BfT2JqZWN0IG1h cmtlciA9IGJlZ3YgPyBYQ0FSIChib3VuZHMpIDogWENBUiAoWENEUiAoYm91 bmRzKSk7DQogICBlYXNzZXJ0IChFUSAoRm1hcmtlcl9idWZmZXIgKG1hcmtl ciksIGJ1ZikpOw0KLSAgcmV0dXJuIFhNQVJLRVIgKG1hcmtlcik7DQorICBy ZXR1cm4gbWFya2VyOw0KIH0NCiANCiAvKiBSZXRyaWV2ZSB0aGUgbGFiZWwg b2YgdGhlIGlubmVybW9zdCBsYWJlbGVkIHJlc3RyaWN0aW9uIGluIEJVRi4N CkBAIC0yNzY2LDE0ICsyNzY1LDE0IEBAIGxhYmVsZWRfcmVzdHJpY3Rpb25z X3JlbW92ZV9pbl9jdXJyZW50X2J1ZmZlciAodm9pZCkNCiBzdGF0aWMgdm9p ZA0KIHVud2luZF9yZXNldF9vdXRlcm1vc3RfcmVzdHJpY3Rpb24gKExpc3Bf T2JqZWN0IGJ1ZikNCiB7DQotICBzdHJ1Y3QgTGlzcF9NYXJrZXIgKmJlZ3YN Ci0gICAgPSBsYWJlbGVkX3Jlc3RyaWN0aW9uc19nZXRfYm91bmQgKGJ1Ziwg dHJ1ZSwgZmFsc2UpOw0KLSAgc3RydWN0IExpc3BfTWFya2VyICp6dg0KLSAg ICA9IGxhYmVsZWRfcmVzdHJpY3Rpb25zX2dldF9ib3VuZCAoYnVmLCBmYWxz ZSwgZmFsc2UpOw0KLSAgaWYgKGJlZ3YgIT0gTlVMTCAmJiB6diAhPSBOVUxM KQ0KKyAgTGlzcF9PYmplY3QgYmVndiA9IGxhYmVsZWRfcmVzdHJpY3Rpb25z X2dldF9ib3VuZCAoYnVmLCB0cnVlLCBmYWxzZSk7DQorICBMaXNwX09iamVj dCB6diA9IGxhYmVsZWRfcmVzdHJpY3Rpb25zX2dldF9ib3VuZCAoYnVmLCBm YWxzZSwgZmFsc2UpOw0KKyAgaWYgKCEgTklMUCAoYmVndikgJiYgISBOSUxQ ICh6dikpDQogICAgIHsNCi0gICAgICBTRVRfQlVGX0JFR1ZfQk9USCAoWEJV RkZFUiAoYnVmKSwgYmVndi0+Y2hhcnBvcywgYmVndi0+Ynl0ZXBvcyk7DQot ICAgICAgU0VUX0JVRl9aVl9CT1RIIChYQlVGRkVSIChidWYpLCB6di0+Y2hh cnBvcywgenYtPmJ5dGVwb3MpOw0KKyAgICAgIFNFVF9CVUZfQkVHVl9CT1RI IChYQlVGRkVSIChidWYpLA0KKwkJCSBYTUFSS0VSIChiZWd2KS0+Y2hhcnBv cywgWE1BUktFUiAoYmVndiktPmJ5dGVwb3MpOw0KKyAgICAgIFNFVF9CVUZf WlZfQk9USCAoWEJVRkZFUiAoYnVmKSwNCisJCSAgICAgICBYTUFSS0VSICh6 diktPmNoYXJwb3MsIFhNQVJLRVIgKHp2KS0+Ynl0ZXBvcyk7DQogICAgIH0N CiAgIGVsc2UNCiAgICAgbGFiZWxlZF9yZXN0cmljdGlvbnNfcmVtb3ZlIChi dWYpOw0KQEAgLTI3OTcsMTQgKzI3OTYsMTQgQEAgcmVzZXRfb3V0ZXJtb3N0 X3Jlc3RyaWN0aW9ucyAodm9pZCkNCiAgICAgew0KICAgICAgIGJ1ZiA9IFhD QVIgKFhDQVIgKHZhbCkpOw0KICAgICAgIGVhc3NlcnQgKEJVRkZFUlAgKGJ1 ZikpOw0KLSAgICAgIHN0cnVjdCBMaXNwX01hcmtlciAqYmVndg0KLQk9IGxh YmVsZWRfcmVzdHJpY3Rpb25zX2dldF9ib3VuZCAoYnVmLCB0cnVlLCB0cnVl KTsNCi0gICAgICBzdHJ1Y3QgTGlzcF9NYXJrZXIgKnp2DQotCT0gbGFiZWxl ZF9yZXN0cmljdGlvbnNfZ2V0X2JvdW5kIChidWYsIGZhbHNlLCB0cnVlKTsN Ci0gICAgICBpZiAoYmVndiAhPSBOVUxMICYmIHp2ICE9IE5VTEwpDQorICAg ICAgTGlzcF9PYmplY3QgYmVndiA9IGxhYmVsZWRfcmVzdHJpY3Rpb25zX2dl dF9ib3VuZCAoYnVmLCB0cnVlLCB0cnVlKTsNCisgICAgICBMaXNwX09iamVj dCB6diA9IGxhYmVsZWRfcmVzdHJpY3Rpb25zX2dldF9ib3VuZCAoYnVmLCBm YWxzZSwgdHJ1ZSk7DQorICAgICAgaWYgKCEgTklMUCAoYmVndikgJiYgISBO SUxQICh6dikpDQogCXsNCi0JICBTRVRfQlVGX0JFR1ZfQk9USCAoWEJVRkZF UiAoYnVmKSwgYmVndi0+Y2hhcnBvcywgYmVndi0+Ynl0ZXBvcyk7DQotCSAg U0VUX0JVRl9aVl9CT1RIIChYQlVGRkVSIChidWYpLCB6di0+Y2hhcnBvcywg enYtPmJ5dGVwb3MpOw0KKwkgIFNFVF9CVUZfQkVHVl9CT1RIIChYQlVGRkVS IChidWYpLA0KKwkJCSAgICAgWE1BUktFUiAoYmVndiktPmNoYXJwb3MsIFhN QVJLRVIgKGJlZ3YpLT5ieXRlcG9zKTsNCisJICBTRVRfQlVGX1pWX0JPVEgg KFhCVUZGRVIgKGJ1ZiksDQorCQkJICAgWE1BUktFUiAoenYpLT5jaGFycG9z LCBYTUFSS0VSICh6diktPmJ5dGVwb3MpOw0KIAkgIHJlY29yZF91bndpbmRf cHJvdGVjdCAodW53aW5kX3Jlc2V0X291dGVybW9zdF9yZXN0cmljdGlvbiwg YnVmKTsNCiAJfQ0KICAgICAgIGVsc2UNCkBAIC0yODc4LDE1ICsyODc3LDE1 IEBAIERFRlVOICgid2lkZW4iLCBGd2lkZW4sIFN3aWRlbiwgMCwgMCwgIiIs DQogICAgIH0NCiAgIGVsc2UNCiAgICAgew0KLSAgICAgIHN0cnVjdCBMaXNw X01hcmtlciAqYmVndg0KLQk9IGxhYmVsZWRfcmVzdHJpY3Rpb25zX2dldF9i b3VuZCAoYnVmLCB0cnVlLCBmYWxzZSk7DQotICAgICAgc3RydWN0IExpc3Bf TWFya2VyICp6dg0KLQk9IGxhYmVsZWRfcmVzdHJpY3Rpb25zX2dldF9ib3Vu ZCAoYnVmLCBmYWxzZSwgZmFsc2UpOw0KLSAgICAgIGVhc3NlcnQgKGJlZ3Yg IT0gTlVMTCAmJiB6diAhPSBOVUxMKTsNCi0gICAgICBpZiAoYmVndi0+Y2hh cnBvcyAhPSBCRUdWIHx8IHp2LT5jaGFycG9zICE9IFpWKQ0KKyAgICAgIExp c3BfT2JqZWN0IGJlZ3YgPSBsYWJlbGVkX3Jlc3RyaWN0aW9uc19nZXRfYm91 bmQgKGJ1ZiwgdHJ1ZSwgZmFsc2UpOw0KKyAgICAgIExpc3BfT2JqZWN0IHp2 ID0gbGFiZWxlZF9yZXN0cmljdGlvbnNfZ2V0X2JvdW5kIChidWYsIGZhbHNl LCBmYWxzZSk7DQorICAgICAgZWFzc2VydCAoISBOSUxQIChiZWd2KSAmJiAh IE5JTFAgKHp2KSk7DQorICAgICAgaWYgKFhNQVJLRVIgKGJlZ3YpLT5jaGFy cG9zICE9IEJFR1YgfHwgWE1BUktFUiAoenYpLT5jaGFycG9zICE9IFpWKQ0K IAljdXJyZW50X2J1ZmZlci0+Y2xpcF9jaGFuZ2VkID0gMTsNCi0gICAgICBT RVRfQlVGX0JFR1ZfQk9USCAoY3VycmVudF9idWZmZXIsIGJlZ3YtPmNoYXJw b3MsIGJlZ3YtPmJ5dGVwb3MpOw0KLSAgICAgIFNFVF9CVUZfWlZfQk9USCAo Y3VycmVudF9idWZmZXIsIHp2LT5jaGFycG9zLCB6di0+Ynl0ZXBvcyk7DQor ICAgICAgU0VUX0JVRl9CRUdWX0JPVEggKGN1cnJlbnRfYnVmZmVyLA0KKwkJ CSBYTUFSS0VSIChiZWd2KS0+Y2hhcnBvcywgWE1BUktFUiAoYmVndiktPmJ5 dGVwb3MpOw0KKyAgICAgIFNFVF9CVUZfWlZfQk9USCAoY3VycmVudF9idWZm ZXIsDQorCQkgICAgICAgWE1BUktFUiAoenYpLT5jaGFycG9zLCBYTUFSS0VS ICh6diktPmJ5dGVwb3MpOw0KICAgICAgIC8qIElmIHRoZSBvbmx5IHJlbWFp bmluZyBib3VuZHMgaW4gbGFiZWxlZF9yZXN0cmljdGlvbnMgZm9yDQogCSBj dXJyZW50X2J1ZmZlciBhcmUgdGhlIGJvdW5kcyB0aGF0IHdlcmUgc2V0IGJ5 IHRoZSB1c2VyLCBubw0KIAkgbGFiZWxlZCByZXN0cmljdGlvbiBpcyBpbiBl ZmZlY3QgaW4gY3VycmVudF9idWZmZXIgYW55bW9yZToNCkBAIC0yOTMzLDE1 ICsyOTMyLDEzIEBAIHBvc2l0aW9ucyAoaW50ZWdlcnMgb3IgbWFya2Vycykg Ym91bmRpbmcgdGhlIHRleHQgdGhhdCBzaG91bGQNCiAgICAgew0KICAgICAg IC8qIExpbWl0IHRoZSBzdGFydCBhbmQgZW5kIHBvc2l0aW9ucyB0byB0aG9z ZSBvZiB0aGUgaW5uZXJtb3N0DQogCSBsYWJlbGVkIHJlc3RyaWN0aW9uLiAg Ki8NCi0gICAgICBzdHJ1Y3QgTGlzcF9NYXJrZXIgKmJlZ3YNCi0JPSBsYWJl bGVkX3Jlc3RyaWN0aW9uc19nZXRfYm91bmQgKGJ1ZiwgdHJ1ZSwgZmFsc2Up Ow0KLSAgICAgIHN0cnVjdCBMaXNwX01hcmtlciAqenYNCi0JPSBsYWJlbGVk X3Jlc3RyaWN0aW9uc19nZXRfYm91bmQgKGJ1ZiwgZmFsc2UsIGZhbHNlKTsN Ci0gICAgICBlYXNzZXJ0IChiZWd2ICE9IE5VTEwgJiYgenYgIT0gTlVMTCk7 DQotICAgICAgaWYgKHMgPCBiZWd2LT5jaGFycG9zKSBzID0gYmVndi0+Y2hh cnBvczsNCi0gICAgICBpZiAocyA+IHp2LT5jaGFycG9zKSBzID0genYtPmNo YXJwb3M7DQotICAgICAgaWYgKGUgPCBiZWd2LT5jaGFycG9zKSBlID0gYmVn di0+Y2hhcnBvczsNCi0gICAgICBpZiAoZSA+IHp2LT5jaGFycG9zKSBlID0g enYtPmNoYXJwb3M7DQorICAgICAgTGlzcF9PYmplY3QgYmVndiA9IGxhYmVs ZWRfcmVzdHJpY3Rpb25zX2dldF9ib3VuZCAoYnVmLCB0cnVlLCBmYWxzZSk7 DQorICAgICAgTGlzcF9PYmplY3QgenYgPSBsYWJlbGVkX3Jlc3RyaWN0aW9u c19nZXRfYm91bmQgKGJ1ZiwgZmFsc2UsIGZhbHNlKTsNCisgICAgICBlYXNz ZXJ0ICghIE5JTFAgKGJlZ3YpICYmICEgTklMUCAoenYpKTsNCisgICAgICBp ZiAocyA8IFhNQVJLRVIgKGJlZ3YpLT5jaGFycG9zKSBzID0gWE1BUktFUiAo YmVndiktPmNoYXJwb3M7DQorICAgICAgaWYgKHMgPiBYTUFSS0VSICh6dikt PmNoYXJwb3MpIHMgPSBYTUFSS0VSICh6diktPmNoYXJwb3M7DQorICAgICAg aWYgKGUgPCBYTUFSS0VSIChiZWd2KS0+Y2hhcnBvcykgZSA9IFhNQVJLRVIg KGJlZ3YpLT5jaGFycG9zOw0KKyAgICAgIGlmIChlID4gWE1BUktFUiAoenYp LT5jaGFycG9zKSBlID0gWE1BUktFUiAoenYpLT5jaGFycG9zOw0KICAgICB9 DQogDQogICAvKiBSZWNvcmQgdGhlIGFjY2Vzc2libGUgcmFuZ2Ugb2YgdGhl IGJ1ZmZlciB3aGVuIG5hcnJvdy10by1yZWdpb24NCg== --FlbA6aq5CO--