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: Universal functions to manage multiple window caches. Date: Wed, 17 Apr 2019 13:03:51 -0700 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart_Wed_Apr_17_13:03:51_2019-1" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="258337"; mail-complaints-to="usenet@blaine.gmane.org" To: Emacs Devel Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Apr 17 22:04:28 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 1hGqnD-00151s-Hd for ged-emacs-devel@m.gmane.org; Wed, 17 Apr 2019 22:04:28 +0200 Original-Received: from localhost ([127.0.0.1]:59033 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hGqnC-0007FY-CQ for ged-emacs-devel@m.gmane.org; Wed, 17 Apr 2019 16:04:26 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:45552) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hGqmw-0007Dy-TZ for emacs-devel@gnu.org; Wed, 17 Apr 2019 16:04:11 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hGqmv-00058d-TA for emacs-devel@gnu.org; Wed, 17 Apr 2019 16:04:10 -0400 Original-Received: from gateway20.websitewelcome.com ([192.185.4.169]:14966) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hGqmv-00053w-8Z for emacs-devel@gnu.org; Wed, 17 Apr 2019 16:04:09 -0400 Original-Received: from cm14.websitewelcome.com (cm14.websitewelcome.com [100.42.49.7]) by gateway20.websitewelcome.com (Postfix) with ESMTP id DDD1D400CC4BD for ; Wed, 17 Apr 2019 15:03:52 -0500 (CDT) Original-Received: from gator3053.hostgator.com ([50.87.144.69]) by cmsmtp with SMTP id GqmehXdlX2qH7GqmehtKmi; Wed, 17 Apr 2019 15:03:52 -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:To:From:Message-ID:Date: Sender:Reply-To:Cc: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=uKUjOzAqAXPRu+qe4yvAOiGTNj7DWZAUxuq6cuCqkUA=; b=Vq1H8k0CAyNrR6A9vAbA+SCMQL IkmNeR+22vYfsEvQ9iW/FRoikn0Ff64dsByCyM29bgiyfOG19XPqcuoSrWazJszE2oPLwLgsFwjoQ z6Il0rMQ4zvkafuBXUP8Qcq8aDk/T2GNcNPGIDhRL9nf4zxq6grSvD82CpIX7PZqcaLo+kNfbplRZ S7aJedrrkR6FxwRPT454SNmvrzFTPsPIz0/dg90XMYOGWTYaZOaAG/t/dboqkMgLM5e9cJgcOYr+D 2q6tqFCATJr40PHV6FbXWFIt4IbjztlqUC/ioYKat+VBj6+C/X2OgXDg2dCszA85iqGWRLc2O8d3I tI2ZFVhg==; Original-Received: from cpe-45-48-239-195.socal.res.rr.com ([45.48.239.195]:50178 helo=server.local) by gator3053.hostgator.com with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.91) (envelope-from ) id 1hGqme-0039Rg-0a for emacs-devel@gnu.org; Wed, 17 Apr 2019 15:03:52 -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: 1hGqme-0039Rg-0a X-Source-Sender: cpe-45-48-239-195.socal.res.rr.com (server.local) [45.48.239.195]:50178 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.4.169 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:235608 Archived-At: --Multipart_Wed_Apr_17_13:03:51_2019-1 Content-Type: text/plain; charset=US-ASCII I am working on feature requests 22873 (multiple fake cursors) and 17684 (crosshairs that track the cursor position). window.h defines four different caches of fake cursors, with the only difference between them being their names: struct multiple_cursors_cache *temp_elts; ptrdiff_t temp_elts_allocated; int temp_nelts; struct multiple_cursors_cache *mc_elts; ptrdiff_t mc_elts_allocated; int mc_nelts; struct multiple_cursors_cache *ch_elts; ptrdiff_t ch_elts_allocated; int ch_nelts; struct multiple_cursors_cache *fc_elts; ptrdiff_t fc_elts_allocated; int fc_nelts; I am trying to create two functions (reset and populate) to manage all four caches, but am having troubling figuring out how to substitute the names of the applicable caches depending upon which cache is needed. I tried several variations of the following approach, but ran into problems either compiling or Emacs crashed when the crosshairs feature was activated. struct multiple_cursors_cache **foo_elts = w->ch_elts; ptrdiff_t *foo_elts_allocated = &w->ch_elts_allocated; int *foo_nelts = &w->ch_nelts; Q: What is the best way to create (1) a reset function and (2) a populate function that can handle all four caches? void mc_reset_cache (struct window *w, ...) { if (BUFFERP (w->contents) && NILP (BVAR (XBUFFER (w->contents), crosshairs)) && foo_nelts > 1) { /* Decrease the size of the array to a bare minimum. */ xnrealloc (foo_elts, 1, sizeof *foo_elts); foo_nelts = 0; foo_elts_allocated = 1; } else if (BUFFERP (w->contents) && !NILP (BVAR (XBUFFER (w->contents), crosshairs))) { /* Set all _used_ elements of the array to zero. elts_allocated remain the same. */ memset (foo_elts, 0, foo_nelts * (sizeof *foo_elts)); foo_nelts = 0; } } void mc_populate_cache (struct window *w, ...) { if (BUFFERP (w->contents) && !NILP (BVAR (XBUFFER (w->contents), crosshairs))) { /* Increase the size of the array. */ if (foo_elts_allocated < foo_nelts && foo_nelts < max_elts) { int old_alloc = foo_elts_allocated; int new_elts = foo_nelts - foo_elts_allocated; foo_elts = xpalloc (foo_elts, &foo_elts_allocated, new_elts, INT_MAX, sizeof *foo_elts); memset (foo_elts + old_alloc, 0, (foo_elts_allocated - old_alloc) * sizeof *foo_elts); } /* Below this comment is where the applicable cache will be populated. */ } } Attached is a draft patch that applies to the master branch as of 04/08/2019 (a038df77de7b1aa2d73a6478493b8838b59e4982). --Multipart_Wed_Apr_17_13:03:51_2019-1 Content-Type: application/diff; type=patch Content-Disposition: attachment; filename="2019_04_17__12_46_02_063.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 L3NyYy9kaXNwbmV3LmMKaW5kZXggY2NiMDhlYy4uNDJjZGM5NiAxMDA2NDQKLS0tIGEvc3JjL2Rp c3BuZXcuYworKysgYi9zcmMvZGlzcG5ldy5jCkBAIC0zMzgwLDYgKzMzODAsMTE0IEBAIGNoZWNr X2N1cnJlbnRfbWF0cml4X2ZsYWdzIChzdHJ1Y3Qgd2luZG93ICp3KQogCiAjZW5kaWYgLyogR0xZ UEhfREVCVUcgKi8KIAorZW51bSB0eXBlX29mX2NhY2hlCit7CisgIE5PX0NBQ0hFLAorICBNQ19U RU1QX0NBQ0hFLAorICBNQ19DQUNIRSwKKyAgQ0hfQ0FDSEUsCisgIEZDX0NBQ0hFCit9OworCitz dGF0aWMgdm9pZAorbWNfcmVzZXRfY2FjaGUgKHN0cnVjdCB3aW5kb3cgKncsIGVudW0gdHlwZV9v Zl9jYWNoZSBjYWNoZV90eXBlKQoreworICBzd2l0Y2ggKGNhY2hlX3R5cGUpCisgICAgeworICAg ICAgY2FzZSBOT19DQUNIRToKKyAgICAgICAgeworICAgICAgICAgIHJldHVybjsKKyAgICAgICAg fQorICAgICAgY2FzZSBNQ19URU1QX0NBQ0hFOgorICAgICAgICB7CisgICAgICAgICAgYnJlYWs7 CisgICAgICAgIH0KKyAgICAgIGNhc2UgTUNfQ0FDSEU6CisgICAgICAgIHsKKyAgICAgICAgICBi cmVhazsKKyAgICAgICAgfQorICAgICAgY2FzZSBDSF9DQUNIRToKKyAgICAgICAgeworICAgICAg ICAgIGlmIChCVUZGRVJQICh3LT5jb250ZW50cykgJiYgTklMUCAoQlZBUiAoWEJVRkZFUiAody0+ Y29udGVudHMpLCBjcm9zc2hhaXJzKSkKKyAgICAgICAgICAgICAgJiYgdy0+bWNfbmVsdHMgPiAx KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBEZWNyZWFzZSB0aGUgc2l6ZSBvZiB0 aGUgYXJyYXkgdG8gYSBiYXJlIG1pbmltdW0uICovCisgICAgICAgICAgICAgIHhucmVhbGxvYyAo dy0+bWNfZWx0cywgMSwgc2l6ZW9mICp3LT5tY19lbHRzKTsKKyAgICAgICAgICAgICAgdy0+bWNf bmVsdHMgPSAwOworICAgICAgICAgICAgICB3LT5tY19lbHRzX2FsbG9jYXRlZCA9IDE7CisgICAg ICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChCVUZGRVJQICh3LT5jb250ZW50cykgJiYg IU5JTFAgKEJWQVIgKFhCVUZGRVIgKHctPmNvbnRlbnRzKSwgY3Jvc3NoYWlycykpKQorICAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgLyogU2V0IGFsbCBfdXNlZF8gZWxlbWVudHMgb2Yg dGhlIGFycmF5IHRvIHplcm8uICBlbHRzX2FsbG9jYXRlZCByZW1haW4KKyAgICAgICAgICAgICAg ICB0aGUgc2FtZS4gKi8KKyAgICAgICAgICAgICAgICBtZW1zZXQgKHctPm1jX2VsdHMsIDAsIHct Pm1jX25lbHRzICogKHNpemVvZiAqdy0+bWNfZWx0cykpOworICAgICAgICAgICAgICAgIC8qIFVu Y29tbWVudCBuZXh0IGxpbmUgd2hlbiBkZWJ1Z2dpbmcgaXMgZmluaXNoZWQuICovCisgICAgICAg ICAgICAgICAgLy8gdy0+bWNfbmVsdHMgPSAwOworICAgICAgICAgICAgICB9CisgICAgICAgICAg YnJlYWs7CisgICAgICAgIH0KKyAgICAgIGNhc2UgRkNfQ0FDSEU6CisgICAgICAgIHsKKyAgICAg ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQKK21jX3BvcHVs YXRlX2NhY2hlIChzdHJ1Y3Qgd2luZG93ICp3LCBlbnVtIHR5cGVfb2ZfY2FjaGUgY2FjaGVfdHlw ZSkKK3sKKyAgc3dpdGNoIChjYWNoZV90eXBlKQorICAgIHsKKyAgICAgIGNhc2UgTk9fQ0FDSEU6 CisgICAgICAgIHsKKyAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgIGNhc2UgTUNf VEVNUF9DQUNIRToKKyAgICAgICAgeworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg ICBjYXNlIE1DX0NBQ0hFOgorICAgICAgICB7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K KyAgICAgIGNhc2UgQ0hfQ0FDSEU6CisgICAgICAgIHsKKyAgICAgICAgICBpZiAoQlVGRkVSUCAo dy0+Y29udGVudHMpCisgICAgICAgICAgICAgICYmICFOSUxQIChCVkFSIChYQlVGRkVSICh3LT5j b250ZW50cyksIGNyb3NzaGFpcnMpKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgaW50 IG1heF9lbHRzID0gMjUwMDA7CisgICAgICAgICAgICAgIHctPm1jX25lbHRzICs9ICh3LT5tY19u ZWx0cyA8IG1heF9lbHRzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDEwMAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6IDA7CisgICAgICAgICAgICAgIC8qIEluY3JlYXNl IHRoZSBzaXplIG9mIHRoZSBhcnJheS4gKi8KKyAgICAgICAgICAgICAgaWYgKHctPm1jX2VsdHNf YWxsb2NhdGVkIDwgdy0+bWNfbmVsdHMKKyAgICAgICAgICAgICAgICAgICYmIHctPm1jX25lbHRz IDwgbWF4X2VsdHMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgaW50IG9s ZF9hbGxvYyA9IHctPm1jX2VsdHNfYWxsb2NhdGVkOworICAgICAgICAgICAgICAgICAgaW50IG5l d19lbHRzID0gdy0+bWNfbmVsdHMgLSB3LT5tY19lbHRzX2FsbG9jYXRlZDsKKyAgICAgICAgICAg ICAgICAgIHctPm1jX2VsdHMgPSB4cGFsbG9jICh3LT5tY19lbHRzLCAmdy0+bWNfZWx0c19hbGxv Y2F0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfZWx0 cywgSU5UX01BWCwgc2l6ZW9mICp3LT5tY19lbHRzKTsKKyAgICAgICAgICAgICAgICAgIG1lbXNl dCAody0+bWNfZWx0cyArIG9sZF9hbGxvYywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICh3LT5tY19lbHRzX2FsbG9jYXRlZCAtIG9sZF9hbGxvYykgKiBzaXplb2YgKnctPm1jX2VsdHMp OworICAgICAgICAgICAgICAgICAgZm9yIChpbnQgZWx0ID0gMDsgZWx0IDwgdy0+bWNfbmVsdHM7 ICsrZWx0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgdy0+ bWNfZWx0c1tlbHRdLnggPSBlbHQ7CisgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHJlZCA9 IGVsdDsgCisgICAgICAgICAgICAgICAgICAgICAgdy0+bWNfZWx0c1tlbHRdLmZvcmVncm91bmQu cmVkID0gcmVkOworICAgICAgICAgICAgICAgICAgICAgIHctPm1jX2VsdHNbZWx0XS5lbmFibGVk X3AgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICBmcHJpbnRmIChzdGRlcnIsICJ3LT5tY19uZWx0cyAoJWQpIHwgdy0+bWNfZWx0 c19hbGxvY2F0ZWQgKCVkKSB8IHctPm1jX2VsdHNbOTldLnggKCVkKVxuIiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdy0+bWNfbmVsdHMsIHctPm1jX2VsdHNfYWxsb2NhdGVkLCB3 LT5tY19lbHRzWzk5XS54KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAg ICAgfQorICAgICAgY2FzZSBGQ19DQUNIRToKKyAgICAgICAgeworICAgICAgICAgIGJyZWFrOwor ICAgICAgICB9CisgICAgfQorfQogCiAvKiBVcGRhdGUgZGlzcGxheSBvZiB3aW5kb3cgVy4KICAg IElmIEZPUkNFX1AsIGRvbid0IHN0b3AgdXBkYXRpbmcgd2hlbiBpbnB1dCBpcyBwZW5kaW5nLiAg Ki8KQEAgLTMzODgsNiArMzQ5NiwyMyBAQCBzdGF0aWMgYm9vbAogdXBkYXRlX3dpbmRvdyAoc3Ry dWN0IHdpbmRvdyAqdywgYm9vbCBmb3JjZV9wKQogewogICBzdHJ1Y3QgZ2x5cGhfbWF0cml4ICpk ZXNpcmVkX21hdHJpeCA9IHctPmRlc2lyZWRfbWF0cml4OworCisKKy8qICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiAqLworLyogYmVnaW4gTVVMVElQTEUtQ1VSU09SUyAqLworCittY19yZXNldF9jYWNoZSAo dywgTUNfVEVNUF9DQUNIRSk7CisKK21jX3Jlc2V0X2NhY2hlICh3LCBNQ19DQUNIRSk7CisKK21j X3Jlc2V0X2NhY2hlICh3LCBDSF9DQUNIRSk7CisKK21jX3Jlc2V0X2NhY2hlICh3LCBGQ19DQUNI RSk7CisKKy8qIGVuZCBNVUxUSVBMRS1DVVJTT1JTICovCisvKiAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiog Ki8KKworCiAgIGJvb2wgcGF1c2VkX3A7CiAgIGludCBwcmVlbXB0X2NvdW50ID0gY2xpcF90b19i b3VuZHMgKDEsIGJhdWRfcmF0ZSAvIDI0MDAgKyAxLCBJTlRfTUFYKTsKICAgc3RydWN0IHJlZGlz cGxheV9pbnRlcmZhY2UgKnJpZiA9IEZSQU1FX1JJRiAoWEZSQU1FIChXSU5ET1dfRlJBTUUgKHcp KSk7CkBAIC0zNDk3LDYgKzM2MjIsMjEgQEAgdXBkYXRlX3dpbmRvdyAoc3RydWN0IHdpbmRvdyAq dywgYm9vbCBmb3JjZV9wKQogCiAgICAgc2V0X2N1cnNvcjoKIAorCisvKiAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiogKi8KKy8qIE1VTFRJUExFLUNVUlNPUlMgKi8KKworbWNfcG9wdWxhdGVfY2FjaGUgKHcs IE1DX1RFTVBfQ0FDSEUpOworCittY19wb3B1bGF0ZV9jYWNoZSAodywgTUNfQ0FDSEUpOworCitt Y19wb3B1bGF0ZV9jYWNoZSAodywgQ0hfQ0FDSEUpOworCittY19wb3B1bGF0ZV9jYWNoZSAodywg RkNfQ0FDSEUpOworCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KKworCiAgICAgICAvKiBVcGRh dGUgdGhlIGhlYWRlciBsaW5lIGFmdGVyIHNjcm9sbGluZyBiZWNhdXNlIGEgbmV3IGhlYWRlcgog CSBsaW5lIHdvdWxkIG90aGVyd2lzZSBvdmVyd3JpdGUgbGluZXMgYXQgdGhlIHRvcCBvZiB0aGUg d2luZG93CiAJIHRoYXQgY2FuIGJlIHNjcm9sbGVkLiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9wZHVt cGVyLmMgYi9zcmMvcGR1bXBlci5jCmluZGV4IGNiMjkxNWMuLmRjNzllYjEgMTAwNjQ0Ci0tLSBh L3NyYy9wZHVtcGVyLmMKKysrIGIvc3JjL3BkdW1wZXIuYwpAQCAtMjc3MCw3ICsyNzcwLDcgQEAg ZHVtcF9oYXNoX3RhYmxlIChzdHJ1Y3QgZHVtcF9jb250ZXh0ICpjdHgsCiBzdGF0aWMgZHVtcF9v ZmYKIGR1bXBfYnVmZmVyIChzdHJ1Y3QgZHVtcF9jb250ZXh0ICpjdHgsIGNvbnN0IHN0cnVjdCBi dWZmZXIgKmluX2J1ZmZlcikKIHsKLSNpZiBDSEVDS19TVFJVQ1RTICYmICFkZWZpbmVkIEhBU0hf YnVmZmVyX0UzNEExMUM2QjkKKyNpZiBDSEVDS19TVFJVQ1RTICYmICFkZWZpbmVkIEhBU0hfYnVm ZmVyX0I3MTJGNkIzREMKICMgZXJyb3IgImJ1ZmZlciBjaGFuZ2VkLiBTZWUgQ0hFQ0tfU1RSVUNU UyBjb21tZW50LiIKICNlbmRpZgogICBzdHJ1Y3QgYnVmZmVyIG11bmdlZF9idWZmZXIgPSAqaW5f YnVmZmVyOwpkaWZmIC0tZ2l0IGEvc3JjL3dpbmRvdy5oIGIvc3JjL3dpbmRvdy5oCmluZGV4IGZk ZWY0MDcuLmU1YTZjY2EgMTAwNjQ0Ci0tLSBhL3NyYy93aW5kb3cuaAorKysgYi9zcmMvd2luZG93 LmgKQEAgLTg4LDYgKzg4LDM5IEBAIGRpc3BsYXkgdGhlIG1lbnUgYmFyIG9yIHRoZSB0b29sIGJh ciAod2hlbiBFbWFjcyB1c2VzIHRvb2xraXRzIHRoYXQKIGRvbid0IGRpc3BsYXkgdGhlaXIgb3du IG1lbnUgYmFyIGFuZCB0b29sIGJhcikgb3IgYSB0b29sdGlwIGluIGEKIHRvb2x0aXAgZnJhbWUg KHdoZW4gdG9vbHRpcHMgYXJlIG5vdCBkaXNwbGF5IGJ5IHRoZSB0b29sa2l0KS4gICovCiAKKwor LyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqICovCisvKiBNVUxUSVBMRS1DVVJTT1JTICovCisKK3N0cnVj dCBSR0IKK3sKKyAgZG91YmxlIHJlZDsKKyAgZG91YmxlIGdyZWVuOworICBkb3VibGUgYmx1ZTsK K307CisKK3N0cnVjdCBtdWx0aXBsZV9jdXJzb3JzX2NhY2hlCit7CisgIGludCB4OworICBpbnQg Zng7CisgIGludCB5OworICBpbnQgZnk7CisgIGludCBocG9zOworICBpbnQgdnBvczsKKyAgaW50 IHdkOworICBpbnQgaDsKKyAgaW50IGN1cnNvcl90eXBlOworICBpbnQgY3Vyc29yX3dpZHRoOwor ICBzdHJ1Y3QgUkdCIGZvcmVncm91bmQ7CisgIHN0cnVjdCBSR0IgYmFja2dyb3VuZDsKKyAgYm9v bCBhY3RpdmVfcDsKKyAgaW50IGdseXBoX2ZsYXZvcjsKKyAgYm9vbCBlbmFibGVkX3A7Cit9Owor CisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiogKi8KKworCiBzdHJ1Y3QgY3Vyc29yX3BvcwogewogICAv KiBQaXhlbCBwb3NpdGlvbi4gIFRoZXNlIGFyZSBhbHdheXMgd2luZG93IHJlbGF0aXZlLiAgKi8K QEAgLTMyNCw2ICszNTcsNjUgQEAgc3RydWN0IHdpbmRvdwogCiAjaWZkZWYgSEFWRV9XSU5ET1df U1lTVEVNCiAKKworLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCisvKiBNVUxUSVBMRS1DVVJTT1JT ICovCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBURU1QT1JBUlkgQ0FDSEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICov CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworICAgIC8qIFZlY3RvciBvZiBmYWtlIGN1cnNv ciBjYWNoZSBzdHJ1Y3R1cmVzLiAqLworICAgIHN0cnVjdCBtdWx0aXBsZV9jdXJzb3JzX2NhY2hl ICp0ZW1wX2VsdHM7CisKKyAgICAvKiBOdW1iZXIgb2YgZWxlbWVudHMgYWxsb2NhdGVkIGZvciB0 aGUgdmVjdG9yIGFib3ZlLiAqLworICAgIHB0cmRpZmZfdCB0ZW1wX2VsdHNfYWxsb2NhdGVkOwor CisgIC8qIFRoZSBudW1iZXIgb2YgZmFrZSBjdXJzb3JzIHByZXNlbnRseSBiZWluZyB1c2VkLiAq LworICAgIGludCB0ZW1wX25lbHRzOworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qICAg ICAgICAgICAgICAgICAgICAgICAgIk1DIiBGTEFWT1IgT0YgRkFLRSBDVVJTT1JTICAgICAgICAg ICAgICAgICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKyAgICAvKiBW ZWN0b3Igb2YgZmFrZSBjdXJzb3IgY2FjaGUgc3RydWN0dXJlcy4gKi8KKyAgICBzdHJ1Y3QgbXVs dGlwbGVfY3Vyc29yc19jYWNoZSAqbWNfZWx0czsKKworICAgIC8qIE51bWJlciBvZiBlbGVtZW50 cyBhbGxvY2F0ZWQgZm9yIHRoZSB2ZWN0b3IgYWJvdmUuICovCisgICAgcHRyZGlmZl90IG1jX2Vs dHNfYWxsb2NhdGVkOworCisgIC8qIFRoZSBudW1iZXIgb2YgZmFrZSBjdXJzb3JzIHByZXNlbnRs eSBiZWluZyB1c2VkLiAqLworICAgIGludCBtY19uZWx0czsKKworLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICJDSCIgRkxBVk9SIE9GIEZBS0UgQ1VS U09SUyAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAq LworCisgICAgLyogVmVjdG9yIG9mIGZha2UgY3Vyc29yIGNhY2hlIHN0cnVjdHVyZXMuICovCisg ICAgc3RydWN0IG11bHRpcGxlX2N1cnNvcnNfY2FjaGUgKmNoX2VsdHM7CisKKyAgICAvKiBOdW1i ZXIgb2YgZWxlbWVudHMgYWxsb2NhdGVkIGZvciB0aGUgdmVjdG9yIGFib3ZlLiAqLworICAgIHB0 cmRpZmZfdCBjaF9lbHRzX2FsbG9jYXRlZDsKKworICAvKiBUaGUgbnVtYmVyIG9mIGZha2UgY3Vy c29ycyBwcmVzZW50bHkgYmVpbmcgdXNlZC4gKi8KKyAgICBpbnQgY2hfbmVsdHM7CisKKy8qIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAiRkMiIEZMQVZP UiBPRiBGQUtFIENVUlNPUlMgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0gKi8KKworICAgIC8qIFZlY3RvciBvZiBmYWtlIGN1cnNvciBjYWNoZSBzdHJ1 Y3R1cmVzLiAqLworICAgIHN0cnVjdCBtdWx0aXBsZV9jdXJzb3JzX2NhY2hlICpmY19lbHRzOwor CisgICAgLyogTnVtYmVyIG9mIGVsZW1lbnRzIGFsbG9jYXRlZCBmb3IgdGhlIHZlY3RvciBhYm92 ZS4gKi8KKyAgICBwdHJkaWZmX3QgZmNfZWx0c19hbGxvY2F0ZWQ7CisKKyAgLyogVGhlIG51bWJl ciBvZiBmYWtlIGN1cnNvcnMgcHJlc2VudGx5IGJlaW5nIHVzZWQuICovCisgICAgaW50IGZjX25l bHRzOworCisvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KKworCiAgICAgLyogQ3Vyc29yIHR5cGUg b2YgbGFzdCBjdXJzb3IgZHJhd24gb24gdGhlIHdpbmRvdy4gICovCiAgICAgZW51bSB0ZXh0X2N1 cnNvcl9raW5kcyBwaHlzX2N1cnNvcl90eXBlOwogCg== --Multipart_Wed_Apr_17_13:03:51_2019-1--