From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Keith David Bershatsky Newsgroups: gmane.emacs.devel Subject: Re: NS port: How to debug excessive garbage collection? Date: Mon, 15 Apr 2019 19:57:48 -0700 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart_Mon_Apr_15_19:57:47_2019-1" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="85328"; mail-complaints-to="usenet@blaine.gmane.org" Cc: eliz@gnu.org, dancol@dancol.org, emacs-devel@gnu.org To: Alex Gramiak Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Apr 16 04:58:46 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hGEJ3-000M2B-U8 for ged-emacs-devel@m.gmane.org; Tue, 16 Apr 2019 04:58:46 +0200 Original-Received: from localhost ([127.0.0.1]:58432 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hGEJ2-0004C0-PI for ged-emacs-devel@m.gmane.org; Mon, 15 Apr 2019 22:58:44 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:54194) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hGEIP-0004Bk-Ji for emacs-devel@gnu.org; Mon, 15 Apr 2019 22:58:06 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hGEIO-0006e0-G7 for emacs-devel@gnu.org; Mon, 15 Apr 2019 22:58:05 -0400 Original-Received: from gateway34.websitewelcome.com ([192.185.150.114]:46257) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hGEIN-0006YQ-UW for emacs-devel@gnu.org; Mon, 15 Apr 2019 22:58:04 -0400 Original-Received: from cm16.websitewelcome.com (cm16.websitewelcome.com [100.42.49.19]) by gateway34.websitewelcome.com (Postfix) with ESMTP id E4AB01BCF23 for ; Mon, 15 Apr 2019 21:57:49 -0500 (CDT) Original-Received: from gator3053.hostgator.com ([50.87.144.69]) by cmsmtp with SMTP id GEI9hT6cA4FKpGEI9hwX5d; Mon, 15 Apr 2019 21:57:49 -0500 X-Authority-Reason: nr=8 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: Sender:Reply-To:Content-Transfer-Encoding:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=9B1dd9cuWOj0oeie8/iT+qkSEMHljo9YBplvtTkXh4k=; b=E2teusNXMg08HN4r8XmJknSntw ZqR92ZiZqhQC9lUqfFJjVv+vfWqohj5wOlwZeLwohnoIRyJDOcshjwGUOFYUT2mxTmVc7tOviI4bM p9MlfGZXlQAIFDqbp652HfDZ3GjpdPwqVs9IOWbeTeMno0v1cJ0JowluiISC+amCFHbdR39+0lnFk agv8fkNZv0QTcoamf908U5qRO/pOxlYDNhnnA6sQYjZ1iiouDXeLdz790L78vWjiCjFmxO98gGGl1 3/Mjm/W3+dKVo/tKcVZMMyK3nBdeBfDSjja++iw00HjtHjLBevfITeXFAT12gL6DW9JRnsLFzhQg3 xnadbMjg==; Original-Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:56685 helo=server.local) by gator3053.hostgator.com with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.91) (envelope-from ) id 1hGEI8-002vuK-NN; Mon, 15 Apr 2019 21:57:48 -0500 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - gator3053.hostgator.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - lawlist.com X-BWhitelist: no X-Source-IP: 45.48.239.195 X-Source-L: No X-Exim-ID: 1hGEI8-002vuK-NN X-Source-Sender: cpe-45-48-239-195.socal.res.rr.com (server.local) [45.48.239.195]:56685 X-Source-Auth: lawlist X-Email-Count: 1 X-Source-Cap: bGF3bGlzdDtsYXdsaXN0O2dhdG9yMzA1My5ob3N0Z2F0b3IuY29t X-Local-Domain: yes X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 192.185.150.114 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:235504 Archived-At: --Multipart_Mon_Apr_15_19:57:47_2019-1 Content-Type: text/plain; charset=US-ASCII I am working on implementing the suggestion of Alex to use structures to store the data for each fake cursor on a per window basis, instead of the prior method that created a Lisp_Object of cons cells (causing the excessive garbage collection issue). It seemed to me that the implementation of creating the vector to store glyph rows looked somewhat similar to what we want to do here. I attempted to borrow a portion of that vector glyph row implementation in the attached working example that applies to the master branch as of 04/08/2019 (a038df77de7b1aa2d73a6478493b8838b59e4982). I had hoped to keep the cache (w->mc_elts) alive for the duration that the fake cursors feature is active in a visible window. However, the cache (w->mc_elts) disappears and becomes NULL. In the attached example, whenever it is time to increase the size of the dynamic vector, I set the value of w->mc_elts[99].x to 99. The value of -1 is used in the stderr printout whenever w->mc_elts is NULL. How can I make the cache (w->mc_elts) persistent without automatically becoming NULL? In the attached example, I launch Emacs after applying the patch and evaluate: (setq crosshairs t) w->mc_nelts (100) | w->mc_elts_allocated (100) | w->mc_elts[99].x (99) w->mc_nelts (200) | w->mc_elts_allocated (200) | w->mc_elts[99].x (99) w->mc_nelts (300) | w->mc_elts_allocated (300) | w->mc_elts[99].x (99) w->mc_nelts (400) | w->mc_elts_allocated (450) | w->mc_elts[99].x (99) w->mc_nelts (500) | w->mc_elts_allocated (675) | w->mc_elts[99].x (99) w->mc_nelts (600) | w->mc_elts_allocated (675) | w->mc_elts[99].x (-1) w->mc_nelts (700) | w->mc_elts_allocated (1012) | w->mc_elts[99].x (99) w->mc_nelts (800) | w->mc_elts_allocated (1012) | w->mc_elts[99].x (-1) w->mc_nelts (900) | w->mc_elts_allocated (1012) | w->mc_elts[99].x (-1) w->mc_nelts (1000) | w->mc_elts_allocated (1012) | w->mc_elts[99].x (-1) w->mc_nelts (1100) | w->mc_elts_allocated (1518) | w->mc_elts[99].x (99) w->mc_nelts (1200) | w->mc_elts_allocated (1518) | w->mc_elts[99].x (-1) w->mc_nelts (1300) | w->mc_elts_allocated (1518) | w->mc_elts[99].x (-1) w->mc_nelts (1400) | w->mc_elts_allocated (1518) | w->mc_elts[99].x (-1) w->mc_nelts (1500) | w->mc_elts_allocated (1518) | w->mc_elts[99].x (-1) w->mc_nelts (1600) | w->mc_elts_allocated (2277) | w->mc_elts[99].x (99) --Multipart_Mon_Apr_15_19:57:47_2019-1 Content-Type: application/diff; type=patch Content-Disposition: attachment; filename="2019_04_15__19_36_14_173.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9idWZmZXIuYyBiL3NyYy9idWZmZXIuYwppbmRleCBhYjQ3NzQ4Li4w MzY0ZWJhIDEwMDY0NAotLS0gYS9zcmMvYnVmZmVyLmMKKysrIGIvc3JjL2J1ZmZlci5jCkBAIC0x MzMsNiArMTMzLDIxIEBAIENIRUNLX09WRVJMQVkgKExpc3BfT2JqZWN0IHgpCiAKIC8qIFRoZXNl IHNldHRlcnMgYXJlIHVzZWQgb25seSBpbiB0aGlzIGZpbGUsIHNvIHRoZXkgY2FuIGJlIHByaXZh dGUuCiAgICBUaGUgcHVibGljIHNldHRlcnMgYXJlIGlubGluZSBmdW5jdGlvbnMgZGVmaW5lZCBp biBidWZmZXIuaC4gICovCisKKworLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCisvKiBiZWdpbiBN VUxUSVBMRS1DVVJTT1JTICovCisKK3N0YXRpYyB2b2lkCitic2V0X2Nyb3NzaGFpcnMgKHN0cnVj dCBidWZmZXIgKmIsIExpc3BfT2JqZWN0IHZhbCkKK3sKKyAgYi0+Y3Jvc3NoYWlyc18gPSB2YWw7 Cit9CisKKy8qIGVuZCBNVUxUSVBMRS1DVVJTT1JTICovCisvKiAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiog Ki8KKworCiBzdGF0aWMgdm9pZAogYnNldF9hYmJyZXZfbW9kZSAoc3RydWN0IGJ1ZmZlciAqYiwg TGlzcF9PYmplY3QgdmFsKQogewpAQCAtNTE0Miw2ICs1MTU3LDE2IEBAIGluaXRfYnVmZmVyX29u Y2UgKHZvaWQpCiAgIGJzZXRfbGFzdF9zZWxlY3RlZF93aW5kb3cgKCZidWZmZXJfbG9jYWxfZmxh Z3MsIG1ha2VfZml4bnVtICgwKSk7CiAKICAgaWR4ID0gMTsKKworCisvKiAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiogKi8KKy8qIE1VTFRJUExFLUNVUlNPUlMgKi8KKworICBYU0VURkFTVElOVCAoQlZBUiAo JmJ1ZmZlcl9sb2NhbF9mbGFncywgY3Jvc3NoYWlycyksIGlkeCk7ICsraWR4OworCisvKiAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiogKi8KKworCiAgIFhTRVRGQVNUSU5UIChCVkFSICgmYnVmZmVyX2xvY2Fs X2ZsYWdzLCBtb2RlX2xpbmVfZm9ybWF0KSwgaWR4KTsgKytpZHg7CiAgIFhTRVRGQVNUSU5UIChC VkFSICgmYnVmZmVyX2xvY2FsX2ZsYWdzLCBhYmJyZXZfbW9kZSksIGlkeCk7ICsraWR4OwogICBY U0VURkFTVElOVCAoQlZBUiAoJmJ1ZmZlcl9sb2NhbF9mbGFncywgb3ZlcndyaXRlX21vZGUpLCBp ZHgpOyArK2lkeDsKQEAgLTUyMjgsNiArNTI1MywxNiBAQCBpbml0X2J1ZmZlcl9vbmNlICh2b2lk KQogICAvKiBNdXN0IGRvIHRoZXNlIGJlZm9yZSBtYWtpbmcgdGhlIGZpcnN0IGJ1ZmZlciEgKi8K IAogICAvKiByZWFsIHNldHVwIGlzIGRvbmUgaW4gYmluZGluZ3MuZWwgKi8KKworCisvKiAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiogKi8KKy8qIE1VTFRJUExFLUNVUlNPUlMgKi8KKworICBic2V0X2Nyb3Nz aGFpcnMgKCZidWZmZXJfZGVmYXVsdHMsIFFuaWwpOworCisvKiAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiog Ki8KKworCiAgIGJzZXRfbW9kZV9saW5lX2Zvcm1hdCAoJmJ1ZmZlcl9kZWZhdWx0cywgYnVpbGRf cHVyZV9jX3N0cmluZyAoIiUtIikpOwogICBic2V0X2hlYWRlcl9saW5lX2Zvcm1hdCAoJmJ1ZmZl cl9kZWZhdWx0cywgUW5pbCk7CiAgIGJzZXRfYWJicmV2X21vZGUgKCZidWZmZXJfZGVmYXVsdHMs IFFuaWwpOwpAQCAtNTQ2NCw2ICs1NDk5LDE1IEBAIHN5bXNfb2ZfYnVmZmVyICh2b2lkKQogICBz dGF0aWNwcm8gKCZRU0Z1bmRhbWVudGFsKTsKICAgc3RhdGljcHJvICgmVmJ1ZmZlcl9hbGlzdCk7 CiAKKworLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqICovCisvKiBNVUxUSVBMRS1DVVJTT1JTICovCisK KyAgREVGU1lNIChRY3Jvc3NoYWlycywgImNyb3NzaGFpcnMiKTsKKworLyogKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqICovCisKKwogICBERUZTWU0gKFFjaG9pY2UsICJjaG9pY2UiKTsKICAgREVGU1lNIChR bGVmdCwgImxlZnQiKTsKICAgREVGU1lNIChRcmlnaHQsICJyaWdodCIpOwpAQCAtNTUwMSw2ICs1 NTQ1LDE2IEBAIHN5bXNfb2ZfYnVmZmVyICh2b2lkKQogICBGcHV0IChRcHJvdGVjdGVkX2ZpZWxk LCBRZXJyb3JfbWVzc2FnZSwKIAlidWlsZF9wdXJlX2Nfc3RyaW5nICgiQXR0ZW1wdCB0byBtb2Rp ZnkgYSBwcm90ZWN0ZWQgZmllbGQiKSk7CiAKKworLyogKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCisv KiBNVUxUSVBMRS1DVVJTT1JTICovCisKKyAgREVGVkFSX1BFUl9CVUZGRVIgKCJjcm9zc2hhaXJz IiwgJkJWQVIgKGN1cnJlbnRfYnVmZmVyLCBjcm9zc2hhaXJzKSwgUW5pbCwKKyAgICBkb2M6IC8q IEEgYnVmZXItbG9jYWwgdmFyaWFibGUgdG8gYWN0aXZhdGUvZGVhY3RpdmF0ZSBjcm9zc2hhaXJz LiAqLyk7CisKKy8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLworCisKICAgREVGVkFSX1BFUl9CVUZG RVIgKCJoZWFkZXItbGluZS1mb3JtYXQiLAogCQkgICAgICZCVkFSIChjdXJyZW50X2J1ZmZlciwg aGVhZGVyX2xpbmVfZm9ybWF0KSwKIAkJICAgICBRbmlsLApkaWZmIC0tZ2l0IGEvc3JjL2J1ZmZl ci5oIGIvc3JjL2J1ZmZlci5oCmluZGV4IGY0MmMzZTkuLjIzM2RiY2EgMTAwNjQ0Ci0tLSBhL3Ny Yy9idWZmZXIuaAorKysgYi9zcmMvYnVmZmVyLmgKQEAgLTYzNiw2ICs2MzYsMTYgQEAgc3RydWN0 IGJ1ZmZlcgogICAgICBjYWNoZSBhcmUgZW5hYmxlZC4gIFNlZSBzZWFyY2guYywgaW5kZW50LmMg YW5kIGJpZGkuYyBmb3IgZGV0YWlscy4gICovCiAgIExpc3BfT2JqZWN0IGNhY2hlX2xvbmdfc2Nh bnNfOwogCisKKy8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLworLyogTVVMVElQTEUtQ1VSU09SUyAq LworCisgIC8qIFRoZSBuYW1lIG9mIHRoZSBidWZmZXItbG9jYWwgdmFyaWFibGUuICovCisgIExp c3BfT2JqZWN0IGNyb3NzaGFpcnNfOworCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KKworCiAg IC8qIElmIHRoZSB3aWR0aCBydW4gY2FjaGUgaXMgZW5hYmxlZCwgdGhpcyB0YWJsZSBjb250YWlu cyB0aGUKICAgICAgY2hhcmFjdGVyIHdpZHRocyB3aWR0aF9ydW5fY2FjaGUgKHNlZSBhYm92ZSkg YXNzdW1lcy4gIFdoZW4gd2UKICAgICAgZG8gYSB0aG9yb3VnaCByZWRpc3BsYXksIHdlIGNvbXBh cmUgdGhpcyBhZ2FpbnN0IHRoZSBidWZmZXIncwpkaWZmIC0tZ2l0IGEvc3JjL2Rpc3BuZXcuYyBi L3NyYy9kaXNwbmV3LmMKaW5kZXggY2NiMDhlYy4uYmU5MTZkNCAxMDA2NDQKLS0tIGEvc3JjL2Rp c3BuZXcuYworKysgYi9zcmMvZGlzcG5ldy5jCkBAIC0zMzg4LDYgKzMzODgsMjcgQEAgc3RhdGlj IGJvb2wKIHVwZGF0ZV93aW5kb3cgKHN0cnVjdCB3aW5kb3cgKncsIGJvb2wgZm9yY2VfcCkKIHsK ICAgc3RydWN0IGdseXBoX21hdHJpeCAqZGVzaXJlZF9tYXRyaXggPSB3LT5kZXNpcmVkX21hdHJp eDsKKworCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KKy8qIGJlZ2luIE1VTFRJUExFLUNVUlNP UlMgKi8KKworICBpZiAoQlVGRkVSUCAody0+Y29udGVudHMpICYmIE5JTFAgKEJWQVIgKFhCVUZG RVIgKHctPmNvbnRlbnRzKSwgY3Jvc3NoYWlycykpCisgICAgICAmJiB3LT5tY19uZWx0cyA+IDEp CisgICAgeworICAgICAgLyogRGVjcmVhc2UgdGhlIHNpemUgb2YgdGhlIGFycmF5IHRvIGEgYmFy ZSBtaW5pbXVtLiAqLworICAgICAgeG5yZWFsbG9jICh3LT5tY19lbHRzLCAxLCBzaXplb2YgKnct Pm1jX2VsdHMpOworICAgICAgdy0+bWNfbmVsdHMgPSAxOworICAgICAgdy0+bWNfZWx0c19hbGxv Y2F0ZWQgPSAxOworICAgIH0KKyAgICBlbHNlIGlmIChCVUZGRVJQICh3LT5jb250ZW50cykgJiYg IU5JTFAgKEJWQVIgKFhCVUZGRVIgKHctPmNvbnRlbnRzKSwgY3Jvc3NoYWlycykpKQorICAgICAg LyogU2V0IGFsbCBlbGVtZW50cyBvZiB0aGUgYXJyYXkgdG8gemVyby4gKi8KKyAgICAgIG1lbXNl dCAoJnctPm1jX2VsdHMsIDAsIHNpemVvZiAody0+bWNfZWx0cykpOworCisvKiBlbmQgTVVMVElQ TEUtQ1VSU09SUyAqLworLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCisKKwogICBib29sIHBhdXNl ZF9wOwogICBpbnQgcHJlZW1wdF9jb3VudCA9IGNsaXBfdG9fYm91bmRzICgxLCBiYXVkX3JhdGUg LyAyNDAwICsgMSwgSU5UX01BWCk7CiAgIHN0cnVjdCByZWRpc3BsYXlfaW50ZXJmYWNlICpyaWYg PSBGUkFNRV9SSUYgKFhGUkFNRSAoV0lORE9XX0ZSQU1FICh3KSkpOwpAQCAtMzQ5Nyw2ICszNTE4 LDQ1IEBAIHVwZGF0ZV93aW5kb3cgKHN0cnVjdCB3aW5kb3cgKncsIGJvb2wgZm9yY2VfcCkKIAog ICAgIHNldF9jdXJzb3I6CiAKKworLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCisvKiBNVUxUSVBM RS1DVVJTT1JTICovCisKKyAgaWYgKEJVRkZFUlAgKHctPmNvbnRlbnRzKQorICAgICAgJiYgIU5J TFAgKEJWQVIgKFhCVUZGRVIgKHctPmNvbnRlbnRzKSwgY3Jvc3NoYWlycykpKQorICAgIHsKKyAg ICAgIGludCBtYXhfZWx0cyA9IDI1MDAwOworICAgICAgdy0+bWNfbmVsdHMgKz0gKHctPm1jX25l bHRzIDwgbWF4X2VsdHMpCisgICAgICAgICAgICAgICAgICAgICA/IDEwMAorICAgICAgICAgICAg ICAgICAgICAgOiAwOworICAgICAgLyogSW5jcmVhc2UgdGhlIHNpemUgb2YgdGhlIGFycmF5LiAq LworICAgICAgaWYgKHctPm1jX2VsdHNfYWxsb2NhdGVkIDwgdy0+bWNfbmVsdHMKKyAgICAgICAg ICAmJiB3LT5tY19uZWx0cyA8IG1heF9lbHRzKQorICAgICAgICB7CisgICAgICAgICAgaW50IG9s ZF9hbGxvYyA9IHctPm1jX2VsdHNfYWxsb2NhdGVkOworICAgICAgICAgIGludCBuZXdfZWx0cyA9 IHctPm1jX25lbHRzIC0gdy0+bWNfZWx0c19hbGxvY2F0ZWQ7CisgICAgICAgICAgdy0+bWNfZWx0 cyA9IHhwYWxsb2MgKHctPm1jX2VsdHMsICZ3LT5tY19lbHRzX2FsbG9jYXRlZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfZWx0cywgSU5UX01BWCwgc2l6ZW9mICp3LT5t Y19lbHRzKTsKKyAgICAgICAgICBtZW1zZXQgKHctPm1jX2VsdHMgKyBvbGRfYWxsb2MsIDAsCisg ICAgICAgICAgICAgICAgICAgKHctPm1jX2VsdHNfYWxsb2NhdGVkIC0gb2xkX2FsbG9jKSAqIHNp emVvZiAqdy0+bWNfZWx0cyk7CisgICAgICAgICAgZm9yIChpbnQgZWx0ID0gMDsgZWx0IDwgdy0+ bWNfbmVsdHM7ICsrZWx0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICB3LT5tY19lbHRz W2VsdF0ueCA9IGVsdDsKKyAgICAgICAgICAgICAgZG91YmxlIHJlZCA9IGVsdDsgCisgICAgICAg ICAgICAgIHctPm1jX2VsdHNbZWx0XS5mb3JlZ3JvdW5kLnJlZCA9IHJlZDsKKyAgICAgICAgICAg ICAgdy0+bWNfZWx0c1tlbHRdLmVuYWJsZWRfcCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAg ICAgIH0KKyAgICAgIGludCBlbHRfOTkgPSAody0+bWNfZWx0cyAhPSBOVUxMKQorICAgICAgICAg ICAgICAgID8gdy0+bWNfZWx0c1s5OV0ueAorICAgICAgICAgICAgICAgIDogLTE7CisgICAgICBm cHJpbnRmIChzdGRlcnIsICJ3LT5tY19uZWx0cyAoJWQpIHwgdy0+bWNfZWx0c19hbGxvY2F0ZWQg KCVkKSB8IHctPm1jX2VsdHNbOTldLnggKCVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAg IHctPm1jX25lbHRzLCB3LT5tY19lbHRzX2FsbG9jYXRlZCwgZWx0Xzk5KTsKKyAgICB9CisKKy8q ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiAqLworCisKICAgICAgIC8qIFVwZGF0ZSB0aGUgaGVhZGVyIGxp bmUgYWZ0ZXIgc2Nyb2xsaW5nIGJlY2F1c2UgYSBuZXcgaGVhZGVyCiAJIGxpbmUgd291bGQgb3Ro ZXJ3aXNlIG92ZXJ3cml0ZSBsaW5lcyBhdCB0aGUgdG9wIG9mIHRoZSB3aW5kb3cKIAkgdGhhdCBj YW4gYmUgc2Nyb2xsZWQuICAqLwpkaWZmIC0tZ2l0IGEvc3JjL3BkdW1wZXIuYyBiL3NyYy9wZHVt cGVyLmMKaW5kZXggY2IyOTE1Yy4uZGM3OWViMSAxMDA2NDQKLS0tIGEvc3JjL3BkdW1wZXIuYwor KysgYi9zcmMvcGR1bXBlci5jCkBAIC0yNzcwLDcgKzI3NzAsNyBAQCBkdW1wX2hhc2hfdGFibGUg KHN0cnVjdCBkdW1wX2NvbnRleHQgKmN0eCwKIHN0YXRpYyBkdW1wX29mZgogZHVtcF9idWZmZXIg KHN0cnVjdCBkdW1wX2NvbnRleHQgKmN0eCwgY29uc3Qgc3RydWN0IGJ1ZmZlciAqaW5fYnVmZmVy KQogewotI2lmIENIRUNLX1NUUlVDVFMgJiYgIWRlZmluZWQgSEFTSF9idWZmZXJfRTM0QTExQzZC OQorI2lmIENIRUNLX1NUUlVDVFMgJiYgIWRlZmluZWQgSEFTSF9idWZmZXJfQjcxMkY2QjNEQwog IyBlcnJvciAiYnVmZmVyIGNoYW5nZWQuIFNlZSBDSEVDS19TVFJVQ1RTIGNvbW1lbnQuIgogI2Vu ZGlmCiAgIHN0cnVjdCBidWZmZXIgbXVuZ2VkX2J1ZmZlciA9ICppbl9idWZmZXI7CmRpZmYgLS1n aXQgYS9zcmMvd2luZG93LmggYi9zcmMvd2luZG93LmgKaW5kZXggZmRlZjQwNy4uZDc3YjZmMSAx MDA2NDQKLS0tIGEvc3JjL3dpbmRvdy5oCisrKyBiL3NyYy93aW5kb3cuaApAQCAtODgsNiArODgs MzkgQEAgZGlzcGxheSB0aGUgbWVudSBiYXIgb3IgdGhlIHRvb2wgYmFyICh3aGVuIEVtYWNzIHVz ZXMgdG9vbGtpdHMgdGhhdAogZG9uJ3QgZGlzcGxheSB0aGVpciBvd24gbWVudSBiYXIgYW5kIHRv b2wgYmFyKSBvciBhIHRvb2x0aXAgaW4gYQogdG9vbHRpcCBmcmFtZSAod2hlbiB0b29sdGlwcyBh cmUgbm90IGRpc3BsYXkgYnkgdGhlIHRvb2xraXQpLiAgKi8KIAorCisvKiAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiogKi8KKy8qIE1VTFRJUExFLUNVUlNPUlMgKi8KKworc3RydWN0IFJHQgoreworICBkb3Vi bGUgcmVkOworICBkb3VibGUgZ3JlZW47CisgIGRvdWJsZSBibHVlOworfTsKKworc3RydWN0IG11 bHRpcGxlX2N1cnNvcnNfY2FjaGUKK3sKKyAgaW50IHg7CisgIGludCBmeDsKKyAgaW50IHk7Cisg IGludCBmeTsKKyAgaW50IGhwb3M7CisgIGludCB2cG9zOworICBpbnQgd2Q7CisgIGludCBoOwor ICBpbnQgY3Vyc29yX3R5cGU7CisgIGludCBjdXJzb3Jfd2lkdGg7CisgIHN0cnVjdCBSR0IgZm9y ZWdyb3VuZDsKKyAgc3RydWN0IFJHQiBiYWNrZ3JvdW5kOworICBib29sIGFjdGl2ZV9wOworICBp bnQgZ2x5cGhfZmxhdm9yOworICBib29sIGVuYWJsZWRfcDsKK307CisKKy8qICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiAqLworCisKIHN0cnVjdCBjdXJzb3JfcG9zCiB7CiAgIC8qIFBpeGVsIHBvc2l0aW9u LiAgVGhlc2UgYXJlIGFsd2F5cyB3aW5kb3cgcmVsYXRpdmUuICAqLwpAQCAtMzI0LDYgKzM1Nywy MiBAQCBzdHJ1Y3Qgd2luZG93CiAKICNpZmRlZiBIQVZFX1dJTkRPV19TWVNURU0KIAorCisvKiAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiogKi8KKy8qIE1VTFRJUExFLUNVUlNPUlMgKi8KKworICAgIC8qIFZl Y3RvciBvZiBmYWtlIGN1cnNvciBjYWNoZSBzdHJ1Y3R1cmVzLiAqLworICAgIHN0cnVjdCBtdWx0 aXBsZV9jdXJzb3JzX2NhY2hlICptY19lbHRzOworCisgICAgLyogTnVtYmVyIG9mIGVsZW1lbnRz IGFsbG9jYXRlZCBmb3IgdGhlIHZlY3RvciBhYm92ZS4gKi8KKyAgICBwdHJkaWZmX3QgbWNfZWx0 c19hbGxvY2F0ZWQ7CisKKyAgLyogVGhlIG51bWJlciBvZiBmYWtlIGN1cnNvcnMgcHJlc2VudGx5 IGJlaW5nIHVzZWQuICovCisgICAgaW50IG1jX25lbHRzOworCisvKiAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiogKi8KKworCiAgICAgLyogQ3Vyc29yIHR5cGUgb2YgbGFzdCBjdXJzb3IgZHJhd24gb24gdGhl IHdpbmRvdy4gICovCiAgICAgZW51bSB0ZXh0X2N1cnNvcl9raW5kcyBwaHlzX2N1cnNvcl90eXBl OwogCg== --Multipart_Mon_Apr_15_19:57:47_2019-1--