Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sc8ka-004Hc4-0D for pgsql-hackers@arkaria.postgresql.org; Thu, 08 Aug 2024 19:24:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sc8kY-00GXLt-H3 for pgsql-hackers@arkaria.postgresql.org; Thu, 08 Aug 2024 19:24:38 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sc8kX-00GXKC-TS for pgsql-hackers@lists.postgresql.org; Thu, 08 Aug 2024 19:24:38 +0000 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sc8kU-003qZ8-JU for pgsql-hackers@postgresql.org; Thu, 08 Aug 2024 19:24:37 +0000 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-1fc5549788eso12979505ad.1 for ; Thu, 08 Aug 2024 12:24:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1723145072; x=1723749872; darn=postgresql.org; h=mime-version:user-agent:date:to:from:subject:message-id:from:to:cc :subject:date:message-id:reply-to; bh=vw/8jvIx0iA/tloBC34iKQU+AkPu1WaoZfl1Q44JhN4=; b=0wZxM1P6f6FI0olTCKKFr2m3M4rn0E8IHETogJ71jdGgieIxkDnVzQwv530WBRo/Sn Vk2fMRHKcQNh4ZuQqOYBFeut1JPrfNOsY0Ch+1ex3W1Pk8KjPkdPmLUZwU1acQ7RI9uV 2VgA8aBEQCq0k7U4NTsGC6GXnf0Rv3euy64el3kXW3mQUZcjrNsG6Y4y+jIhjvhCzPez wVLkVgPesxOGFXfd8mrP45wnHQnmKMJ1Q7FZtD8c6BY7BJ6EDNjBVLY2wGRQurribBmf 5mcx0YpdZx3Pj2fNoo9jjB0Er7IkzGh+YwPeM/Flu5ifjHVHGIosQ1pzshNBsy1gGxCs IYGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723145072; x=1723749872; h=mime-version:user-agent:date:to:from:subject:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=vw/8jvIx0iA/tloBC34iKQU+AkPu1WaoZfl1Q44JhN4=; b=SwZ+PUKI2sgyFZs4nIwgTHDPIifnbkWYmtIYuJMVhcF3K6uMKKgbLJVukU6SJL68Kr 6zxFcLyDM0x+ojSLin7verOGBZ0wnZaFGkqW48iH0R/JEezfS+vM8sg18q3AALaEmlfu J4+rrTO6Nw/iBM1J5kHd70wkqkP4budfR1xBpD1mm0fvVEEUQha/jdruTwLgWdf3KsOi pRElFtNWk4+zvP57rCBDnN9SdRYAZlTvnWMtxy99vVOi3ro8ETxDajWmNwtRWz1eYdLu yJPnmOm+QyEdu/ErjJ+vHmCZr0JHmdPSOiwYtJ0RUvwYcgZdO9asKQrq3j4vLMYnVslM 6+LQ== X-Gm-Message-State: AOJu0YxygVgY8Sl/DOAx92+dUumrGtjyAYAKdZHpsKWJkuJeLNP9Nbax uBS+ZeoHyU4u6dzYtvGWSl3o/xBw47g/eBytoaw/vZagDX50NXFkU8h23GfTdl46OTomPLhHtT4 = X-Google-Smtp-Source: AGHT+IGkIy/t9i3TWVG/dR6B2Ht7GZ2MHVc2+f03uIP30D+RSiq1pPq5/urWWXKzCJPislIK3TQrFg== X-Received: by 2002:a17:902:d501:b0:1fb:7435:c2c7 with SMTP id d9443c01a7336-2009531fad3mr32600735ad.57.1723145071235; Thu, 08 Aug 2024 12:24:31 -0700 (PDT) Received: from jeff-laptop.lan (c-76-102-242-158.hsd1.ca.comcast.net. [76.102.242.158]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1ff592b541esm127609345ad.297.2024.08.08.12.24.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 08 Aug 2024 12:24:29 -0700 (PDT) Message-ID: <54d20e812bd6c3e44c10eddcd757ec494ebf1803.camel@j-davis.com> Subject: [18] Fix a few issues with the collation cache From: Jeff Davis To: pgsql-hackers@postgresql.org Date: Thu, 08 Aug 2024 12:24:28 -0700 Content-Type: multipart/mixed; boundary="=-QUjbQ8Xz7nhm6c3/9brZ" User-Agent: Evolution 3.44.4-0ubuntu2 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-QUjbQ8Xz7nhm6c3/9brZ Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable The collation cache, which maps collation oids to pg_locale_t objects, has a few longstanding issues: 1. Using TopMemoryContext too much, with potential for leaks on error paths. 2. Creating collators (UCollator for ICU or locale_t for libc) that can leak on some error paths. For instance, the following will leak the result of newlocale(): create collation c2 (provider=3Dlibc, locale=3D'C.utf8', version=3D'bogus'); 3. Not invalidating the cache. Collations don't change in a way that matters during the lifetime of a backend, so the main problem is DROP COLLATION. That can leave dangling entries in the cache until the backend exits, and perhaps be a problem if there's OID wraparound. The patches make use of resource owners for problems #2 and #3. There aren't a lot of examples where resource owners are used in this way, so I'd appreciate feedback on whether this is a reasonable thing to do or not. Does it feel over-engineered? We can solve these problems by rearranging the code to avoid problem #2 and iterating through the hash table for problem #3, but using resource owners felt cleaner to me. These problems exist in all supported branches, but the fixes are somewhat invasive so I'm not inclined to backport them unless someone thinks the problems are serious enough. Regards, Jeff Davis --=-QUjbQ8Xz7nhm6c3/9brZ Content-Disposition: attachment; filename="v1-0001-Minor-refactor-of-collation-cache.patch" Content-Type: text/x-patch; name="v1-0001-Minor-refactor-of-collation-cache.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA3YTAwN2QzNTczYzZiZGE2NzcyOWFiNDViZDU4OTMxYmZjZGFmNzAyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBU dWUsIDYgQXVnIDIwMjQgMTI6NDQ6MTQgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxIDEvNV0gTWlu b3IgcmVmYWN0b3Igb2YgY29sbGF0aW9uIGNhY2hlLgoKUHV0IGNvbGxhdGlvbiBjYWNoZSBsb2dp YyBpbiBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oKSwgYW5kCnNlcGFyYXRlIG91dCB0aGUg c2xvdyBwYXRoIGZvciBjb25zdHJ1Y3RpbmcgYSBuZXcgcGdfbG9jYWxlX3Qgb2JqZWN0LgotLS0K IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYyB8IDI4NiArKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMzUgaW5zZXJ0aW9ucygrKSwgMTUxIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYwppbmRleCBjZDM2NjFlNzI3OS4u MTU2MDIwOWVmMjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMKQEAgLTEyMTksNDYgKzEy MTksNiBAQCBJc29Mb2NhbGVOYW1lKGNvbnN0IGNoYXIgKndpbmxvY25hbWUpCiAjZW5kaWYJCQkJ CQkJLyogV0lOMzIgJiYgTENfTUVTU0FHRVMgKi8KIAogCi0vKgotICogQ2FjaGUgbWVjaGFuaXNt IGZvciBjb2xsYXRpb24gaW5mb3JtYXRpb24uCi0gKgotICogTm90ZSB0aGF0IHdlIGN1cnJlbnRs eSBsYWNrIGFueSB3YXkgdG8gZmx1c2ggdGhlIGNhY2hlLiAgU2luY2Ugd2UgZG9uJ3QKLSAqIHN1 cHBvcnQgQUxURVIgQ09MTEFUSU9OLCB0aGlzIGlzIE9LLiAgVGhlIHdvcnN0IGNhc2UgaXMgdGhh dCBzb21lb25lCi0gKiBkcm9wcyBhIGNvbGxhdGlvbiwgYW5kIGEgdXNlbGVzcyBjYWNoZSBlbnRy eSBoYW5ncyBhcm91bmQgaW4gZXhpc3RpbmcKLSAqIGJhY2tlbmRzLgotICovCi1zdGF0aWMgY29s bGF0aW9uX2NhY2hlX2VudHJ5ICoKLWxvb2t1cF9jb2xsYXRpb25fY2FjaGUoT2lkIGNvbGxhdGlv bikKLXsKLQljb2xsYXRpb25fY2FjaGVfZW50cnkgKmNhY2hlX2VudHJ5OwotCWJvb2wJCWZvdW5k OwotCi0JQXNzZXJ0KE9pZElzVmFsaWQoY29sbGF0aW9uKSk7Ci0JQXNzZXJ0KGNvbGxhdGlvbiAh PSBERUZBVUxUX0NPTExBVElPTl9PSUQpOwotCi0JaWYgKENvbGxhdGlvbkNhY2hlID09IE5VTEwp Ci0JewotCQlDb2xsYXRpb25DYWNoZUNvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9w TWVtb3J5Q29udGV4dCwKLQkJCQkJCQkJCQkJCQkgICJjb2xsYXRpb24gY2FjaGUiLAotCQkJCQkJ CQkJCQkJCSAgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7Ci0JCUNvbGxhdGlvbkNhY2hlID0gY29s bGF0aW9uX2NhY2hlX2NyZWF0ZShDb2xsYXRpb25DYWNoZUNvbnRleHQsCi0JCQkJCQkJCQkJCQkx NiwgTlVMTCk7Ci0JfQotCi0JY2FjaGVfZW50cnkgPSBjb2xsYXRpb25fY2FjaGVfaW5zZXJ0KENv bGxhdGlvbkNhY2hlLCBjb2xsYXRpb24sICZmb3VuZCk7Ci0JaWYgKCFmb3VuZCkKLQl7Ci0JCS8q Ci0JCSAqIE1ha2Ugc3VyZSBjYWNoZSBlbnRyeSBpcyBtYXJrZWQgaW52YWxpZCwgaW4gY2FzZSB3 ZSBmYWlsIGJlZm9yZQotCQkgKiBzZXR0aW5nIHRoaW5ncy4KLQkJICovCi0JCWNhY2hlX2VudHJ5 LT5sb2NhbGUgPSAwOwotCX0KLQotCXJldHVybiBjYWNoZV9lbnRyeTsKLX0KLQotCiAvKgogICog RGV0ZWN0IHdoZXRoZXIgY29sbGF0aW9uJ3MgTENfQ09MTEFURSBwcm9wZXJ0eSBpcyBDCiAgKi8K QEAgLTE1NTEsMTQ5ICsxNTExLDE3MyBAQCBpbml0X2RhdGFiYXNlX2NvbGxhdGlvbih2b2lkKQog fQogCiAvKgotICogQ3JlYXRlIGEgcGdfbG9jYWxlX3QgZnJvbSBhIGNvbGxhdGlvbiBPSUQuICBS ZXN1bHRzIGFyZSBjYWNoZWQgZm9yIHRoZQotICogbGlmZXRpbWUgb2YgdGhlIGJhY2tlbmQuICBU aHVzLCBkbyBub3QgZnJlZSB0aGUgcmVzdWx0IHdpdGggZnJlZWxvY2FsZSgpLgorICogQ3JlYXRl IHBnX2xvY2FsZV90IGZyb20gY29sbGF0aW9uIG9pZCBpbiBUb3BNZW1vcnlDb250ZXh0LgogICoK ICAqIEZvciBzaW1wbGljaXR5LCB3ZSBhbHdheXMgZ2VuZXJhdGUgQ09MTEFURSArIENUWVBFIGV2 ZW4gdGhvdWdoIHdlCiAgKiBtaWdodCBvbmx5IG5lZWQgb25lIG9mIHRoZW0uICBTaW5jZSB0aGlz IGlzIGNhbGxlZCBvbmx5IG9uY2UgcGVyIHNlc3Npb24sCiAgKiBpdCBzaG91bGRuJ3QgY29zdCBt dWNoLgogICovCi1wZ19sb2NhbGVfdAotcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKE9pZCBj b2xsaWQpCi17Ci0JY29sbGF0aW9uX2NhY2hlX2VudHJ5ICpjYWNoZV9lbnRyeTsKK3N0YXRpYyBw Z19sb2NhbGVfdAoraW5pdF9wZ19sb2NhbGUoT2lkIGNvbGxpZCkKK3sKKwkvKiBXZSBoYXZlbid0 IGNvbXB1dGVkIHRoaXMgeWV0IGluIHRoaXMgc2Vzc2lvbiwgc28gZG8gaXQgKi8KKwlIZWFwVHVw bGUJdHA7CisJRm9ybV9wZ19jb2xsYXRpb24gY29sbGZvcm07CisJc3RydWN0IHBnX2xvY2FsZV9z dHJ1Y3QgcmVzdWx0OworCXBnX2xvY2FsZV90IHJlc3VsdHA7CisJRGF0dW0JCWRhdHVtOworCWJv b2wJCWlzbnVsbDsKIAotCS8qIENhbGxlcnMgbXVzdCBwYXNzIGEgdmFsaWQgT0lEICovCi0JQXNz ZXJ0KE9pZElzVmFsaWQoY29sbGlkKSk7CisJdHAgPSBTZWFyY2hTeXNDYWNoZTEoQ09MTE9JRCwg T2JqZWN0SWRHZXREYXR1bShjb2xsaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHApKQor CQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgY29sbGF0aW9uICV1IiwgY29s bGlkKTsKKwljb2xsZm9ybSA9IChGb3JtX3BnX2NvbGxhdGlvbikgR0VUU1RSVUNUKHRwKTsKIAot CWlmIChjb2xsaWQgPT0gREVGQVVMVF9DT0xMQVRJT05fT0lEKQotCQlyZXR1cm4gJmRlZmF1bHRf bG9jYWxlOworCS8qIFdlJ2xsIGZpbGwgaW4gdGhlIHJlc3VsdCBzdHJ1Y3QgbG9jYWxseSBiZWZv cmUgYWxsb2NhdGluZyBtZW1vcnkgKi8KKwltZW1zZXQoJnJlc3VsdCwgMCwgc2l6ZW9mKHJlc3Vs dCkpOworCXJlc3VsdC5wcm92aWRlciA9IGNvbGxmb3JtLT5jb2xscHJvdmlkZXI7CisJcmVzdWx0 LmRldGVybWluaXN0aWMgPSBjb2xsZm9ybS0+Y29sbGlzZGV0ZXJtaW5pc3RpYzsKIAotCWNhY2hl X2VudHJ5ID0gbG9va3VwX2NvbGxhdGlvbl9jYWNoZShjb2xsaWQpOworCWlmIChjb2xsZm9ybS0+ Y29sbHByb3ZpZGVyID09IENPTExQUk9WSURFUl9CVUlMVElOKQorCXsKKwkJY29uc3QgY2hhciAq bG9jc3RyOworCisJCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChDT0xMT0lELCB0cCwg QW51bV9wZ19jb2xsYXRpb25fY29sbGxvY2FsZSk7CisJCWxvY3N0ciA9IFRleHREYXR1bUdldENT dHJpbmcoZGF0dW0pOworCisJCXJlc3VsdC5jb2xsYXRlX2lzX2MgPSB0cnVlOworCQlyZXN1bHQu Y3R5cGVfaXNfYyA9IChzdHJjbXAobG9jc3RyLCAiQyIpID09IDApOwogCi0JaWYgKGNhY2hlX2Vu dHJ5LT5sb2NhbGUgPT0gMCkKKwkJYnVpbHRpbl92YWxpZGF0ZV9sb2NhbGUoR2V0RGF0YWJhc2VF bmNvZGluZygpLCBsb2NzdHIpOworCisJCXJlc3VsdC5pbmZvLmJ1aWx0aW4ubG9jYWxlID0gTWVt b3J5Q29udGV4dFN0cmR1cChUb3BNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJCQkJCQkgbG9jc3Ry KTsKKwl9CisJZWxzZSBpZiAoY29sbGZvcm0tPmNvbGxwcm92aWRlciA9PSBDT0xMUFJPVklERVJf TElCQykKIAl7Ci0JCS8qIFdlIGhhdmVuJ3QgY29tcHV0ZWQgdGhpcyB5ZXQgaW4gdGhpcyBzZXNz aW9uLCBzbyBkbyBpdCAqLwotCQlIZWFwVHVwbGUJdHA7Ci0JCUZvcm1fcGdfY29sbGF0aW9uIGNv bGxmb3JtOwotCQlzdHJ1Y3QgcGdfbG9jYWxlX3N0cnVjdCByZXN1bHQ7Ci0JCXBnX2xvY2FsZV90 IHJlc3VsdHA7Ci0JCURhdHVtCQlkYXR1bTsKLQkJYm9vbAkJaXNudWxsOwotCi0JCXRwID0gU2Vh cmNoU3lzQ2FjaGUxKENPTExPSUQsIE9iamVjdElkR2V0RGF0dW0oY29sbGlkKSk7Ci0JCWlmICgh SGVhcFR1cGxlSXNWYWxpZCh0cCkpCi0JCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxl ZCBmb3IgY29sbGF0aW9uICV1IiwgY29sbGlkKTsKLQkJY29sbGZvcm0gPSAoRm9ybV9wZ19jb2xs YXRpb24pIEdFVFNUUlVDVCh0cCk7Ci0KLQkJLyogV2UnbGwgZmlsbCBpbiB0aGUgcmVzdWx0IHN0 cnVjdCBsb2NhbGx5IGJlZm9yZSBhbGxvY2F0aW5nIG1lbW9yeSAqLwotCQltZW1zZXQoJnJlc3Vs dCwgMCwgc2l6ZW9mKHJlc3VsdCkpOwotCQlyZXN1bHQucHJvdmlkZXIgPSBjb2xsZm9ybS0+Y29s bHByb3ZpZGVyOwotCQlyZXN1bHQuZGV0ZXJtaW5pc3RpYyA9IGNvbGxmb3JtLT5jb2xsaXNkZXRl cm1pbmlzdGljOwotCi0JCWlmIChjb2xsZm9ybS0+Y29sbHByb3ZpZGVyID09IENPTExQUk9WSURF Ul9CVUlMVElOKQotCQl7Ci0JCQljb25zdCBjaGFyICpsb2NzdHI7CisJCWNvbnN0IGNoYXIgKmNv bGxjb2xsYXRlOworCQljb25zdCBjaGFyICpjb2xsY3R5cGU7CiAKLQkJCWRhdHVtID0gU3lzQ2Fj aGVHZXRBdHRyTm90TnVsbChDT0xMT0lELCB0cCwgQW51bV9wZ19jb2xsYXRpb25fY29sbGxvY2Fs ZSk7Ci0JCQlsb2NzdHIgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKKwkJZGF0dW0gPSBT eXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTExPSUQsIHRwLCBBbnVtX3BnX2NvbGxhdGlvbl9jb2xs Y29sbGF0ZSk7CisJCWNvbGxjb2xsYXRlID0gVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CisJ CWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChDT0xMT0lELCB0cCwgQW51bV9wZ19jb2xs YXRpb25fY29sbGN0eXBlKTsKKwkJY29sbGN0eXBlID0gVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1 bSk7CiAKLQkJCXJlc3VsdC5jb2xsYXRlX2lzX2MgPSB0cnVlOwotCQkJcmVzdWx0LmN0eXBlX2lz X2MgPSAoc3RyY21wKGxvY3N0ciwgIkMiKSA9PSAwKTsKKwkJcmVzdWx0LmNvbGxhdGVfaXNfYyA9 IChzdHJjbXAoY29sbGNvbGxhdGUsICJDIikgPT0gMCkgfHwKKwkJCShzdHJjbXAoY29sbGNvbGxh dGUsICJQT1NJWCIpID09IDApOworCQlyZXN1bHQuY3R5cGVfaXNfYyA9IChzdHJjbXAoY29sbGN0 eXBlLCAiQyIpID09IDApIHx8CisJCQkoc3RyY21wKGNvbGxjdHlwZSwgIlBPU0lYIikgPT0gMCk7 CiAKLQkJCWJ1aWx0aW5fdmFsaWRhdGVfbG9jYWxlKEdldERhdGFiYXNlRW5jb2RpbmcoKSwgbG9j c3RyKTsKKwkJbWFrZV9saWJjX2NvbGxhdG9yKGNvbGxjb2xsYXRlLCBjb2xsY3R5cGUsICZyZXN1 bHQpOworCX0KKwllbHNlIGlmIChjb2xsZm9ybS0+Y29sbHByb3ZpZGVyID09IENPTExQUk9WSURF Ul9JQ1UpCisJeworCQljb25zdCBjaGFyICppY3Vsb2NzdHI7CisJCWNvbnN0IGNoYXIgKmljdXJ1 bGVzOwogCi0JCQlyZXN1bHQuaW5mby5idWlsdGluLmxvY2FsZSA9IE1lbW9yeUNvbnRleHRTdHJk dXAoVG9wTWVtb3J5Q29udGV4dCwKLQkJCQkJCQkJCQkJCQkJCSBsb2NzdHIpOwotCQl9Ci0JCWVs c2UgaWYgKGNvbGxmb3JtLT5jb2xscHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0xJQkMpCi0JCXsK LQkJCWNvbnN0IGNoYXIgKmNvbGxjb2xsYXRlOwotCQkJY29uc3QgY2hhciAqY29sbGN0eXBlOwor CQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoQ09MTE9JRCwgdHAsIEFudW1fcGdfY29s bGF0aW9uX2NvbGxsb2NhbGUpOworCQlpY3Vsb2NzdHIgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRh dHVtKTsKIAotCQkJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTExPSUQsIHRwLCBB bnVtX3BnX2NvbGxhdGlvbl9jb2xsY29sbGF0ZSk7Ci0JCQljb2xsY29sbGF0ZSA9IFRleHREYXR1 bUdldENTdHJpbmcoZGF0dW0pOwotCQkJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENP TExPSUQsIHRwLCBBbnVtX3BnX2NvbGxhdGlvbl9jb2xsY3R5cGUpOwotCQkJY29sbGN0eXBlID0g VGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CisJCXJlc3VsdC5jb2xsYXRlX2lzX2MgPSBmYWxz ZTsKKwkJcmVzdWx0LmN0eXBlX2lzX2MgPSBmYWxzZTsKIAotCQkJcmVzdWx0LmNvbGxhdGVfaXNf YyA9IChzdHJjbXAoY29sbGNvbGxhdGUsICJDIikgPT0gMCkgfHwKLQkJCQkoc3RyY21wKGNvbGxj b2xsYXRlLCAiUE9TSVgiKSA9PSAwKTsKLQkJCXJlc3VsdC5jdHlwZV9pc19jID0gKHN0cmNtcChj b2xsY3R5cGUsICJDIikgPT0gMCkgfHwKLQkJCQkoc3RyY21wKGNvbGxjdHlwZSwgIlBPU0lYIikg PT0gMCk7CisJCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKENPTExPSUQsIHRwLCBBbnVtX3BnX2Nv bGxhdGlvbl9jb2xsaWN1cnVsZXMsICZpc251bGwpOworCQlpZiAoIWlzbnVsbCkKKwkJCWljdXJ1 bGVzID0gVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CisJCWVsc2UKKwkJCWljdXJ1bGVzID0g TlVMTDsKIAotCQkJbWFrZV9saWJjX2NvbGxhdG9yKGNvbGxjb2xsYXRlLCBjb2xsY3R5cGUsICZy ZXN1bHQpOwotCQl9Ci0JCWVsc2UgaWYgKGNvbGxmb3JtLT5jb2xscHJvdmlkZXIgPT0gQ09MTFBS T1ZJREVSX0lDVSkKLQkJewotCQkJY29uc3QgY2hhciAqaWN1bG9jc3RyOwotCQkJY29uc3QgY2hh ciAqaWN1cnVsZXM7CisJCW1ha2VfaWN1X2NvbGxhdG9yKGljdWxvY3N0ciwgaWN1cnVsZXMsICZy ZXN1bHQpOworCX0KIAotCQkJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTExPSUQs IHRwLCBBbnVtX3BnX2NvbGxhdGlvbl9jb2xsbG9jYWxlKTsKLQkJCWljdWxvY3N0ciA9IFRleHRE YXR1bUdldENTdHJpbmcoZGF0dW0pOworCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKENPTExPSUQs IHRwLCBBbnVtX3BnX2NvbGxhdGlvbl9jb2xsdmVyc2lvbiwKKwkJCQkJCQkmaXNudWxsKTsKKwlp ZiAoIWlzbnVsbCkKKwl7CisJCWNoYXIJICAgKmFjdHVhbF92ZXJzaW9uc3RyOworCQljaGFyCSAg ICpjb2xsdmVyc2lvbnN0cjsKIAotCQkJcmVzdWx0LmNvbGxhdGVfaXNfYyA9IGZhbHNlOwotCQkJ cmVzdWx0LmN0eXBlX2lzX2MgPSBmYWxzZTsKKwkJY29sbHZlcnNpb25zdHIgPSBUZXh0RGF0dW1H ZXRDU3RyaW5nKGRhdHVtKTsKIAotCQkJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoQ09MTE9JRCwg dHAsIEFudW1fcGdfY29sbGF0aW9uX2NvbGxpY3VydWxlcywgJmlzbnVsbCk7Ci0JCQlpZiAoIWlz bnVsbCkKLQkJCQlpY3VydWxlcyA9IFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pOwotCQkJZWxz ZQotCQkJCWljdXJ1bGVzID0gTlVMTDsKKwkJaWYgKGNvbGxmb3JtLT5jb2xscHJvdmlkZXIgPT0g Q09MTFBST1ZJREVSX0xJQkMpCisJCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoQ09M TE9JRCwgdHAsIEFudW1fcGdfY29sbGF0aW9uX2NvbGxjb2xsYXRlKTsKKwkJZWxzZQorCQkJZGF0 dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTExPSUQsIHRwLCBBbnVtX3BnX2NvbGxhdGlv bl9jb2xsbG9jYWxlKTsKIAotCQkJbWFrZV9pY3VfY29sbGF0b3IoaWN1bG9jc3RyLCBpY3VydWxl cywgJnJlc3VsdCk7CisJCWFjdHVhbF92ZXJzaW9uc3RyID0gZ2V0X2NvbGxhdGlvbl9hY3R1YWxf dmVyc2lvbihjb2xsZm9ybS0+Y29sbHByb3ZpZGVyLAorCQkJCQkJCQkJCQkJCQkgVGV4dERhdHVt R2V0Q1N0cmluZyhkYXR1bSkpOworCQlpZiAoIWFjdHVhbF92ZXJzaW9uc3RyKQorCQl7CisJCQkv KgorCQkJICogVGhpcyBjb3VsZCBoYXBwZW4gd2hlbiBzcGVjaWZ5aW5nIGEgdmVyc2lvbiBpbiBD UkVBVEUgQ09MTEFUSU9OCisJCQkgKiBidXQgdGhlIHByb3ZpZGVyIGRvZXMgbm90IHN1cHBvcnQg dmVyc2lvbmluZywgb3IgbWFudWFsbHkKKwkJCSAqIGNyZWF0aW5nIGEgbWVzcyBpbiB0aGUgY2F0 YWxvZ3MuCisJCQkgKi8KKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJtc2coImNvbGxhdGlv biBcIiVzXCIgaGFzIG5vIGFjdHVhbCB2ZXJzaW9uLCBidXQgYSB2ZXJzaW9uIHdhcyByZWNvcmRl ZCIsCisJCQkJCQkJTmFtZVN0cihjb2xsZm9ybS0+Y29sbG5hbWUpKSkpOwogCQl9CiAKLQkJZGF0 dW0gPSBTeXNDYWNoZUdldEF0dHIoQ09MTE9JRCwgdHAsIEFudW1fcGdfY29sbGF0aW9uX2NvbGx2 ZXJzaW9uLAotCQkJCQkJCQkmaXNudWxsKTsKLQkJaWYgKCFpc251bGwpCi0JCXsKLQkJCWNoYXIJ ICAgKmFjdHVhbF92ZXJzaW9uc3RyOwotCQkJY2hhcgkgICAqY29sbHZlcnNpb25zdHI7CisJCWlm IChzdHJjbXAoYWN0dWFsX3ZlcnNpb25zdHIsIGNvbGx2ZXJzaW9uc3RyKSAhPSAwKQorCQkJZXJl cG9ydChXQVJOSU5HLAorCQkJCQkoZXJybXNnKCJjb2xsYXRpb24gXCIlc1wiIGhhcyB2ZXJzaW9u IG1pc21hdGNoIiwKKwkJCQkJCQlOYW1lU3RyKGNvbGxmb3JtLT5jb2xsbmFtZSkpLAorCQkJCQkg ZXJyZGV0YWlsKCJUaGUgY29sbGF0aW9uIGluIHRoZSBkYXRhYmFzZSB3YXMgY3JlYXRlZCB1c2lu ZyB2ZXJzaW9uICVzLCAiCisJCQkJCQkJICAgImJ1dCB0aGUgb3BlcmF0aW5nIHN5c3RlbSBwcm92 aWRlcyB2ZXJzaW9uICVzLiIsCisJCQkJCQkJICAgY29sbHZlcnNpb25zdHIsIGFjdHVhbF92ZXJz aW9uc3RyKSwKKwkJCQkJIGVycmhpbnQoIlJlYnVpbGQgYWxsIG9iamVjdHMgYWZmZWN0ZWQgYnkg dGhpcyBjb2xsYXRpb24gYW5kIHJ1biAiCisJCQkJCQkJICJBTFRFUiBDT0xMQVRJT04gJXMgUkVG UkVTSCBWRVJTSU9OLCAiCisJCQkJCQkJICJvciBidWlsZCBQb3N0Z3JlU1FMIHdpdGggdGhlIHJp Z2h0IGxpYnJhcnkgdmVyc2lvbi4iLAorCQkJCQkJCSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmll cihnZXRfbmFtZXNwYWNlX25hbWUoY29sbGZvcm0tPmNvbGxuYW1lc3BhY2UpLAorCQkJCQkJCQkJ CQkJCQlOYW1lU3RyKGNvbGxmb3JtLT5jb2xsbmFtZSkpKSkpOworCX0KIAotCQkJY29sbHZlcnNp b25zdHIgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKKwlSZWxlYXNlU3lzQ2FjaGUodHAp OwogCi0JCQlpZiAoY29sbGZvcm0tPmNvbGxwcm92aWRlciA9PSBDT0xMUFJPVklERVJfTElCQykK LQkJCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoQ09MTE9JRCwgdHAsIEFudW1fcGdf Y29sbGF0aW9uX2NvbGxjb2xsYXRlKTsKLQkJCWVsc2UKLQkJCQlkYXR1bSA9IFN5c0NhY2hlR2V0 QXR0ck5vdE51bGwoQ09MTE9JRCwgdHAsIEFudW1fcGdfY29sbGF0aW9uX2NvbGxsb2NhbGUpOwor CS8qIFdlJ2xsIGtlZXAgdGhlIHBnX2xvY2FsZV90IHN0cnVjdHVyZXMgaW4gVG9wTWVtb3J5Q29u dGV4dCAqLworCXJlc3VsdHAgPSBNZW1vcnlDb250ZXh0QWxsb2MoVG9wTWVtb3J5Q29udGV4dCwg c2l6ZW9mKCpyZXN1bHRwKSk7CisJKnJlc3VsdHAgPSByZXN1bHQ7CiAKLQkJCWFjdHVhbF92ZXJz aW9uc3RyID0gZ2V0X2NvbGxhdGlvbl9hY3R1YWxfdmVyc2lvbihjb2xsZm9ybS0+Y29sbHByb3Zp ZGVyLAotCQkJCQkJCQkJCQkJCQkJIFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pKTsKLQkJCWlm ICghYWN0dWFsX3ZlcnNpb25zdHIpCi0JCQl7Ci0JCQkJLyoKLQkJCQkgKiBUaGlzIGNvdWxkIGhh cHBlbiB3aGVuIHNwZWNpZnlpbmcgYSB2ZXJzaW9uIGluIENSRUFURQotCQkJCSAqIENPTExBVElP TiBidXQgdGhlIHByb3ZpZGVyIGRvZXMgbm90IHN1cHBvcnQgdmVyc2lvbmluZywgb3IKLQkJCQkg KiBtYW51YWxseSBjcmVhdGluZyBhIG1lc3MgaW4gdGhlIGNhdGFsb2dzLgotCQkJCSAqLwotCQkJ CWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJybXNnKCJjb2xsYXRpb24gXCIlc1wiIGhhcyBubyBh Y3R1YWwgdmVyc2lvbiwgYnV0IGEgdmVyc2lvbiB3YXMgcmVjb3JkZWQiLAotCQkJCQkJCQlOYW1l U3RyKGNvbGxmb3JtLT5jb2xsbmFtZSkpKSk7Ci0JCQl9CisJcmV0dXJuIHJlc3VsdHA7Cit9CiAK LQkJCWlmIChzdHJjbXAoYWN0dWFsX3ZlcnNpb25zdHIsIGNvbGx2ZXJzaW9uc3RyKSAhPSAwKQot CQkJCWVyZXBvcnQoV0FSTklORywKLQkJCQkJCShlcnJtc2coImNvbGxhdGlvbiBcIiVzXCIgaGFz IHZlcnNpb24gbWlzbWF0Y2giLAotCQkJCQkJCQlOYW1lU3RyKGNvbGxmb3JtLT5jb2xsbmFtZSkp LAotCQkJCQkJIGVycmRldGFpbCgiVGhlIGNvbGxhdGlvbiBpbiB0aGUgZGF0YWJhc2Ugd2FzIGNy ZWF0ZWQgdXNpbmcgdmVyc2lvbiAlcywgIgotCQkJCQkJCQkgICAiYnV0IHRoZSBvcGVyYXRpbmcg c3lzdGVtIHByb3ZpZGVzIHZlcnNpb24gJXMuIiwKLQkJCQkJCQkJICAgY29sbHZlcnNpb25zdHIs IGFjdHVhbF92ZXJzaW9uc3RyKSwKLQkJCQkJCSBlcnJoaW50KCJSZWJ1aWxkIGFsbCBvYmplY3Rz IGFmZmVjdGVkIGJ5IHRoaXMgY29sbGF0aW9uIGFuZCBydW4gIgotCQkJCQkJCQkgIkFMVEVSIENP TExBVElPTiAlcyBSRUZSRVNIIFZFUlNJT04sICIKLQkJCQkJCQkJICJvciBidWlsZCBQb3N0Z3Jl U1FMIHdpdGggdGhlIHJpZ2h0IGxpYnJhcnkgdmVyc2lvbi4iLAotCQkJCQkJCQkgcXVvdGVfcXVh bGlmaWVkX2lkZW50aWZpZXIoZ2V0X25hbWVzcGFjZV9uYW1lKGNvbGxmb3JtLT5jb2xsbmFtZXNw YWNlKSwKLQkJCQkJCQkJCQkJCQkJCU5hbWVTdHIoY29sbGZvcm0tPmNvbGxuYW1lKSkpKSk7Ci0J CX0KKy8qCisgKiBSZXRyaWV2ZSBhIHBnX2xvY2FsZV90IGZyb20gYSBjb2xsYXRpb24gT0lELiAg UmVzdWx0cyBhcmUgY2FjaGVkIGZvciB0aGUKKyAqIGxpZmV0aW1lIG9mIHRoZSBiYWNrZW5kLCB0 aHVzIGRvIG5vdCBmcmVlIHRoZSByZXN1bHQuCisgKi8KK3BnX2xvY2FsZV90CitwZ19uZXdsb2Nh bGVfZnJvbV9jb2xsYXRpb24oT2lkIGNvbGxpZCkKK3sKKwljb2xsYXRpb25fY2FjaGVfZW50cnkg KmNhY2hlX2VudHJ5OworCWJvb2wJCWZvdW5kOwogCi0JCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisJ LyogQ2FsbGVycyBtdXN0IHBhc3MgYSB2YWxpZCBPSUQgKi8KKwlBc3NlcnQoT2lkSXNWYWxpZChj b2xsaWQpKTsKIAotCQkvKiBXZSdsbCBrZWVwIHRoZSBwZ19sb2NhbGVfdCBzdHJ1Y3R1cmVzIGlu IFRvcE1lbW9yeUNvbnRleHQgKi8KLQkJcmVzdWx0cCA9IE1lbW9yeUNvbnRleHRBbGxvYyhUb3BN ZW1vcnlDb250ZXh0LCBzaXplb2YoKnJlc3VsdHApKTsKLQkJKnJlc3VsdHAgPSByZXN1bHQ7CisJ aWYgKGNvbGxpZCA9PSBERUZBVUxUX0NPTExBVElPTl9PSUQpCisJCXJldHVybiAmZGVmYXVsdF9s b2NhbGU7CiAKLQkJY2FjaGVfZW50cnktPmxvY2FsZSA9IHJlc3VsdHA7CisJLyoKKwkgKiBDYWNo ZSBtZWNoYW5pc20gZm9yIGNvbGxhdGlvbiBpbmZvcm1hdGlvbi4KKwkgKgorCSAqIE5vdGUgdGhh dCB3ZSBjdXJyZW50bHkgbGFjayBhbnkgd2F5IHRvIGZsdXNoIHRoZSBjYWNoZS4gIFNpbmNlIHdl IGRvbid0CisJICogc3VwcG9ydCBBTFRFUiBDT0xMQVRJT04sIHRoaXMgaXMgT0suICBUaGUgd29y c3QgY2FzZSBpcyB0aGF0IHNvbWVvbmUKKwkgKiBkcm9wcyBhIGNvbGxhdGlvbiwgYW5kIGEgdXNl bGVzcyBjYWNoZSBlbnRyeSBoYW5ncyBhcm91bmQgaW4gZXhpc3RpbmcKKwkgKiBiYWNrZW5kcy4K KwkgKi8KKwlpZiAoQ29sbGF0aW9uQ2FjaGUgPT0gTlVMTCkKKwl7CisJCUNvbGxhdGlvbkNhY2hl Q29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BNZW1vcnlDb250ZXh0LAorCQkJCQkJ CQkJCQkJCSAgImNvbGxhdGlvbiBjYWNoZSIsCisJCQkJCQkJCQkJCQkJICBBTExPQ1NFVF9ERUZB VUxUX1NJWkVTKTsKKwkJQ29sbGF0aW9uQ2FjaGUgPSBjb2xsYXRpb25fY2FjaGVfY3JlYXRlKENv bGxhdGlvbkNhY2hlQ29udGV4dCwKKwkJCQkJCQkJCQkJCTE2LCBOVUxMKTsKIAl9CiAKKwljYWNo ZV9lbnRyeSA9IGNvbGxhdGlvbl9jYWNoZV9pbnNlcnQoQ29sbGF0aW9uQ2FjaGUsIGNvbGxpZCwg JmZvdW5kKTsKKwlpZiAoIWZvdW5kIHx8ICFjYWNoZV9lbnRyeS0+bG9jYWxlKQorCQljYWNoZV9l bnRyeS0+bG9jYWxlID0gaW5pdF9wZ19sb2NhbGUoY29sbGlkKTsKKwogCXJldHVybiBjYWNoZV9l bnRyeS0+bG9jYWxlOwogfQogCi0tIAoyLjM0LjEKCg== --=-QUjbQ8Xz7nhm6c3/9brZ Content-Disposition: attachment; filename*0=v1-0002-Tighten-up-make_libc_collator-and-make_icu_collat.pat; filename*1=ch Content-Type: text/x-patch; name="v1-0002-Tighten-up-make_libc_collator-and-make_icu_collat.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAwNmUxY2IzYWVjNDA2NTU5NzZmYTM1ZTE3ZjA1NWEzY2UyMDU3Nzc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBX ZWQsIDcgQXVnIDIwMjQgMTE6MDU6NDYgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxIDIvNV0gVGln aHRlbiB1cCBtYWtlX2xpYmNfY29sbGF0b3IoKSBhbmQKIG1ha2VfaWN1X2NvbGxhdG9yKCkuCgpS ZXR1cm4gdGhlIHJlc3VsdCByYXRoZXIgdGhhbiB1c2luZyBhbiBvdXQgcGFyYW1ldGVyLCBhbmQg bWFrZSBpdCB0aGUKY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gY29weSBpdCBpbnRvIHRoZSBy aWdodCBjb250ZXh0LiBFbnN1cmUgdGhhdApubyBwYXRocyBsZWFrIGEgY29sbGF0b3IuCgpUaGUg ZnVuY3Rpb24gbWFrZV9pY3VfY29sbGF0b3IoKSBkb2Vzbid0IGhhdmUgYW55IGV4dGVybmFsIGNh bGxlcnMsIHNvCmNoYW5nZSBpdCB0byBiZSBzdGF0aWMuIEFsc28sIHdoZW4gcmUtb3BlbmluZyB3 aXRoIHJ1bGVzLCBjbG9zZSB0aGUKcHJldmlvdXMgY29sbGF0b3IgYmVmb3JlIHRoZXJlJ3MgYSBj aGFuY2UgZm9yIGVycm9ycy4KCkluIG1ha2VfbGliY19jb2xsYXRvcigpLCBpZiB0aGUgZmlyc3Qg bmV3bG9jYWxlKCkgc3VjY2VlZHMgYW5kIHRoZQpzZWNvbmQgb25lIGZhaWxzLCBjbG9zZSB0aGUg Zmlyc3QgbG9jYWxlX3Qgb2JqZWN0LgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2Nh bGUuYyB8IDc1ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL3V0 aWxzL3BnX2xvY2FsZS5oICAgICB8ICA0IC0tCiAyIGZpbGVzIGNoYW5nZWQsIDQ3IGluc2VydGlv bnMoKyksIDMyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9wZ19sb2NhbGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYwppbmRleCAx NTYwMjA5ZWYyMS4uMjBmYTRlYmUyYjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9wZ19sb2NhbGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMKQEAg LTEzMDIsMTQgKzEzMDIsMTUgQEAgcmVwb3J0X25ld2xvY2FsZV9mYWlsdXJlKGNvbnN0IGNoYXIg KmxvY2FsZW5hbWUpCiB9CiAKIC8qCi0gKiBJbml0aWFsaXplIHRoZSBsb2NhbGVfdCBmaWVsZC4K KyAqIENyZWF0ZSBhIGxvY2FsZV90IHdpdGggdGhlIGdpdmVuIGNvbGxhdGlvbiBhbmQgY3R5cGUu CiAgKgotICogVGhlICJDIiBhbmQgIlBPU0lYIiBsb2NhbGVzIGFyZSBub3QgYWN0dWFsbHkgaGFu ZGxlZCBieSBsaWJjLCBzbyBzZXQgdGhlCi0gKiBsb2NhbGVfdCB0byB6ZXJvIGluIHRoYXQgY2Fz ZS4KKyAqIFRoZSAiQyIgYW5kICJQT1NJWCIgbG9jYWxlcyBhcmUgbm90IGFjdHVhbGx5IGhhbmRs ZWQgYnkgbGliYywgc28gcmV0dXJuCisgKiBOVUxMLgorICoKKyAqIEVuc3VyZSB0aGF0IG5vIHBh dGggbGVha3MgYSBsb2NhbGVfdC4KICAqLwotc3RhdGljIHZvaWQKLW1ha2VfbGliY19jb2xsYXRv cihjb25zdCBjaGFyICpjb2xsYXRlLCBjb25zdCBjaGFyICpjdHlwZSwKLQkJCQkgICBwZ19sb2Nh bGVfdCByZXN1bHQpCitzdGF0aWMgbG9jYWxlX3QKK21ha2VfbGliY19jb2xsYXRvcihjb25zdCBj aGFyICpjb2xsYXRlLCBjb25zdCBjaGFyICpjdHlwZSkKIHsKIAlsb2NhbGVfdAlsb2MgPSAwOwog CkBAIC0xMzQ4LDcgKzEzNDksMTEgQEAgbWFrZV9saWJjX2NvbGxhdG9yKGNvbnN0IGNoYXIgKmNv bGxhdGUsIGNvbnN0IGNoYXIgKmN0eXBlLAogCQkJZXJybm8gPSAwOwogCQkJbG9jID0gbmV3bG9j YWxlKExDX0NUWVBFX01BU0ssIGN0eXBlLCBsb2MxKTsKIAkJCWlmICghbG9jKQorCQkJeworCQkJ CWlmIChsb2MxKQorCQkJCQlmcmVlbG9jYWxlKGxvYzEpOwogCQkJCXJlcG9ydF9uZXdsb2NhbGVf ZmFpbHVyZShjdHlwZSk7CisJCQl9CiAJCX0KIAkJZWxzZQogCQkJbG9jID0gbG9jMTsKQEAgLTEz NjUsMTUgKzEzNzAsMTggQEAgbWFrZV9saWJjX2NvbGxhdG9yKGNvbnN0IGNoYXIgKmNvbGxhdGUs IGNvbnN0IGNoYXIgKmN0eXBlLAogI2VuZGlmCiAJfQogCi0JcmVzdWx0LT5pbmZvLmx0ID0gbG9j OworCXJldHVybiBsb2M7CiB9CiAKLXZvaWQKLW1ha2VfaWN1X2NvbGxhdG9yKGNvbnN0IGNoYXIg KmljdWxvY3N0ciwKLQkJCQkgIGNvbnN0IGNoYXIgKmljdXJ1bGVzLAotCQkJCSAgc3RydWN0IHBn X2xvY2FsZV9zdHJ1Y3QgKnJlc3VsdHApCi17CisvKgorICogQ3JlYXRlIGEgVUNvbGxhdG9yIHdp dGggdGhlIGdpdmVuIGxvY2FsZSBzdHJpbmcgYW5kIHJ1bGVzLgorICoKKyAqIEVuc3VyZSB0aGF0 IG5vIHBhdGggbGVha3MgYSBVQ29sbGF0b3IuCisgKi8KICNpZmRlZiBVU0VfSUNVCitzdGF0aWMg VUNvbGxhdG9yICoKK21ha2VfaWN1X2NvbGxhdG9yKGNvbnN0IGNoYXIgKmljdWxvY3N0ciwgY29u c3QgY2hhciAqaWN1cnVsZXMpCit7CiAJVUNvbGxhdG9yICAqY29sbGF0b3I7CiAKIAljb2xsYXRv ciA9IHBnX3Vjb2xfb3BlbihpY3Vsb2NzdHIpOwpAQCAtMTM5MSwxNCArMTM5OSwxNCBAQCBtYWtl X2ljdV9jb2xsYXRvcihjb25zdCBjaGFyICppY3Vsb2NzdHIsCiAJCWludDMyX3QJCWxlbmd0aDsK IAogCQlkZWZhdWx0X3J1bGVzID0gdWNvbF9nZXRSdWxlcyhjb2xsYXRvciwgJmxlbmd0aCk7CisJ CXVjb2xfY2xvc2UoY29sbGF0b3IpOworCiAJCWljdV90b191Y2hhcigmbXlfcnVsZXMsIGljdXJ1 bGVzLCBzdHJsZW4oaWN1cnVsZXMpKTsKIAogCQlhZ2dfcnVsZXMgPSBwYWxsb2NfYXJyYXkoVUNo YXIsIHVfc3RybGVuKGRlZmF1bHRfcnVsZXMpICsgdV9zdHJsZW4obXlfcnVsZXMpICsgMSk7CiAJ CXVfc3RyY3B5KGFnZ19ydWxlcywgZGVmYXVsdF9ydWxlcyk7CiAJCXVfc3RyY2F0KGFnZ19ydWxl cywgbXlfcnVsZXMpOwogCi0JCXVjb2xfY2xvc2UoY29sbGF0b3IpOwotCiAJCXN0YXR1cyA9IFVf WkVST19FUlJPUjsKIAkJY29sbGF0b3IgPSB1Y29sX29wZW5SdWxlcyhhZ2dfcnVsZXMsIHVfc3Ry bGVuKGFnZ19ydWxlcyksCiAJCQkJCQkJCSAgVUNPTF9ERUZBVUxULCBVQ09MX0RFRkFVTFRfU1RS RU5HVEgsIE5VTEwsICZzdGF0dXMpOwpAQCAtMTQwOSwxNiArMTQxNyw5IEBAIG1ha2VfaWN1X2Nv bGxhdG9yKGNvbnN0IGNoYXIgKmljdWxvY3N0ciwKIAkJCQkJCQlpY3Vsb2NzdHIsIGljdXJ1bGVz LCB1X2Vycm9yTmFtZShzdGF0dXMpKSkpOwogCX0KIAotCS8qIFdlIHdpbGwgbGVhayB0aGlzIHN0 cmluZyBpZiB0aGUgY2FsbGVyIGVycm9ycyBsYXRlciA6LSggKi8KLQlyZXN1bHRwLT5pbmZvLmlj dS5sb2NhbGUgPSBNZW1vcnlDb250ZXh0U3RyZHVwKFRvcE1lbW9yeUNvbnRleHQsIGljdWxvY3N0 cik7Ci0JcmVzdWx0cC0+aW5mby5pY3UudWNvbCA9IGNvbGxhdG9yOwotI2Vsc2UJCQkJCQkJLyog bm90IFVTRV9JQ1UgKi8KLQkvKiBjb3VsZCBnZXQgaGVyZSBpZiBhIGNvbGxhdGlvbiB3YXMgY3Jl YXRlZCBieSBhIGJ1aWxkIHdpdGggSUNVICovCi0JZXJlcG9ydChFUlJPUiwKLQkJCShlcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCSBlcnJtc2coIklDVSBpcyBub3Qg c3VwcG9ydGVkIGluIHRoaXMgYnVpbGQiKSkpOwotI2VuZGlmCQkJCQkJCS8qIG5vdCBVU0VfSUNV ICovCisJcmV0dXJuIGNvbGxhdG9yOwogfQorI2VuZGlmCQkJCQkJCS8qIG5vdCBVU0VfSUNVICov CiAKIAogYm9vbApAQCAtMTQzNiw3ICsxNDM3LDYgQEAgaW5pdF9kYXRhYmFzZV9jb2xsYXRpb24o dm9pZCkKIAlIZWFwVHVwbGUJdHVwOwogCUZvcm1fcGdfZGF0YWJhc2UgZGJmb3JtOwogCURhdHVt CQlkYXR1bTsKLQlib29sCQlpc251bGw7CiAKIAkvKiBGZXRjaCBvdXIgcGdfZGF0YWJhc2Ugcm93 IG5vcm1hbGx5LCB2aWEgc3lzY2FjaGUgKi8KIAl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoREFUQUJB U0VPSUQsIE9iamVjdElkR2V0RGF0dW0oTXlEYXRhYmFzZUlkKSk7CkBAIC0xNDYxLDggKzE0NjEs MTAgQEAgaW5pdF9kYXRhYmFzZV9jb2xsYXRpb24odm9pZCkKIAl9CiAJZWxzZSBpZiAoZGJmb3Jt LT5kYXRsb2Nwcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQogCXsKKyNpZmRlZiBVU0VfSUNV CiAJCWNoYXIJICAgKmRhdGxvY2FsZTsKIAkJY2hhcgkgICAqaWN1cnVsZXM7CisJCWJvb2wJCWlz bnVsbDsKIAogCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoREFUQUJBU0VPSUQsIHR1 cCwgQW51bV9wZ19kYXRhYmFzZV9kYXRsb2NhbGUpOwogCQlkYXRsb2NhbGUgPSBUZXh0RGF0dW1H ZXRDU3RyaW5nKGRhdHVtKTsKQEAgLTE0NzYsNyArMTQ3OCwxNCBAQCBpbml0X2RhdGFiYXNlX2Nv bGxhdGlvbih2b2lkKQogCQllbHNlCiAJCQlpY3VydWxlcyA9IE5VTEw7CiAKLQkJbWFrZV9pY3Vf Y29sbGF0b3IoZGF0bG9jYWxlLCBpY3VydWxlcywgJmRlZmF1bHRfbG9jYWxlKTsKKwkJZGVmYXVs dF9sb2NhbGUuaW5mby5pY3UudWNvbCA9IG1ha2VfaWN1X2NvbGxhdG9yKGRhdGxvY2FsZSwgaWN1 cnVsZXMpOworCQlkZWZhdWx0X2xvY2FsZS5pbmZvLmljdS5sb2NhbGUgPSBNZW1vcnlDb250ZXh0 U3RyZHVwKFRvcE1lbW9yeUNvbnRleHQsIGRhdGxvY2FsZSk7CisjZWxzZQkJCQkJCQkvKiBub3Qg VVNFX0lDVSAqLworCQkvKiBjb3VsZCBnZXQgaGVyZSBpZiBhIGNvbGxhdGlvbiB3YXMgY3JlYXRl ZCBieSBhIGJ1aWxkIHdpdGggSUNVICovCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coIklDVSBpcyBub3Qg c3VwcG9ydGVkIGluIHRoaXMgYnVpbGQiKSkpOworI2VuZGlmCQkJCQkJCS8qIG5vdCBVU0VfSUNV ICovCiAJfQogCWVsc2UKIAl7CkBAIC0xNDk1LDcgKzE1MDQsNyBAQCBpbml0X2RhdGFiYXNlX2Nv bGxhdGlvbih2b2lkKQogCQlkZWZhdWx0X2xvY2FsZS5jdHlwZV9pc19jID0gKHN0cmNtcChkYXRj dHlwZSwgIkMiKSA9PSAwKSB8fAogCQkJKHN0cmNtcChkYXRjdHlwZSwgIlBPU0lYIikgPT0gMCk7 CiAKLQkJbWFrZV9saWJjX2NvbGxhdG9yKGRhdGNvbGxhdGUsIGRhdGN0eXBlLCAmZGVmYXVsdF9s b2NhbGUpOworCQlkZWZhdWx0X2xvY2FsZS5pbmZvLmx0ID0gbWFrZV9saWJjX2NvbGxhdG9yKGRh dGNvbGxhdGUsIGRhdGN0eXBlKTsKIAl9CiAKIAlkZWZhdWx0X2xvY2FsZS5wcm92aWRlciA9IGRi Zm9ybS0+ZGF0bG9jcHJvdmlkZXI7CkBAIC0xNTY4LDEwICsxNTc3LDExIEBAIGluaXRfcGdfbG9j YWxlKE9pZCBjb2xsaWQpCiAJCXJlc3VsdC5jdHlwZV9pc19jID0gKHN0cmNtcChjb2xsY3R5cGUs ICJDIikgPT0gMCkgfHwKIAkJCShzdHJjbXAoY29sbGN0eXBlLCAiUE9TSVgiKSA9PSAwKTsKIAot CQltYWtlX2xpYmNfY29sbGF0b3IoY29sbGNvbGxhdGUsIGNvbGxjdHlwZSwgJnJlc3VsdCk7CisJ CXJlc3VsdC5pbmZvLmx0ID0gbWFrZV9saWJjX2NvbGxhdG9yKGNvbGxjb2xsYXRlLCBjb2xsY3R5 cGUpOwogCX0KIAllbHNlIGlmIChjb2xsZm9ybS0+Y29sbHByb3ZpZGVyID09IENPTExQUk9WSURF Ul9JQ1UpCiAJeworI2lmZGVmIFVTRV9JQ1UKIAkJY29uc3QgY2hhciAqaWN1bG9jc3RyOwogCQlj b25zdCBjaGFyICppY3VydWxlczsKIApAQCAtMTU4Nyw3ICsxNTk3LDE0IEBAIGluaXRfcGdfbG9j YWxlKE9pZCBjb2xsaWQpCiAJCWVsc2UKIAkJCWljdXJ1bGVzID0gTlVMTDsKIAotCQltYWtlX2lj dV9jb2xsYXRvcihpY3Vsb2NzdHIsIGljdXJ1bGVzLCAmcmVzdWx0KTsKKwkJcmVzdWx0LmluZm8u aWN1LnVjb2wgPSBtYWtlX2ljdV9jb2xsYXRvcihpY3Vsb2NzdHIsIGljdXJ1bGVzKTsKKwkJcmVz dWx0LmluZm8uaWN1LmxvY2FsZSA9IE1lbW9yeUNvbnRleHRTdHJkdXAoVG9wTWVtb3J5Q29udGV4 dCwgaWN1bG9jc3RyKTsKKyNlbHNlCQkJCQkJCS8qIG5vdCBVU0VfSUNVICovCisJCS8qIGNvdWxk IGdldCBoZXJlIGlmIGEgY29sbGF0aW9uIHdhcyBjcmVhdGVkIGJ5IGEgYnVpbGQgd2l0aCBJQ1Ug Ki8KKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCisJCQkJIGVycm1zZygiSUNVIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBidWls ZCIpKSk7CisjZW5kaWYJCQkJCQkJLyogbm90IFVTRV9JQ1UgKi8KIAl9CiAKIAlkYXR1bSA9IFN5 c0NhY2hlR2V0QXR0cihDT0xMT0lELCB0cCwgQW51bV9wZ19jb2xsYXRpb25fY29sbHZlcnNpb24s CkBAIC0yNTMwLDYgKzI1NDcsOCBAQCBidWlsdGluX3ZhbGlkYXRlX2xvY2FsZShpbnQgZW5jb2Rp bmcsIGNvbnN0IGNoYXIgKmxvY2FsZSkKIC8qCiAgKiBXcmFwcGVyIGFyb3VuZCB1Y29sX29wZW4o KSB0byBoYW5kbGUgQVBJIGRpZmZlcmVuY2VzIGZvciBvbGRlciBJQ1UKICAqIHZlcnNpb25zLgor ICoKKyAqIEVuc3VyZSB0aGF0IG5vIHBhdGggbGVha3MgYSBVQ29sbGF0b3IuCiAgKi8KIHN0YXRp YyBVQ29sbGF0b3IgKgogcGdfdWNvbF9vcGVuKGNvbnN0IGNoYXIgKmxvY19zdHIpCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS91dGlscy9wZ19sb2NhbGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3Bn X2xvY2FsZS5oCmluZGV4IGY0MWQzMzk3NWJlLi4xY2EwYjdmYTc0YiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvdXRpbHMvcGdfbG9jYWxlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdfbG9j YWxlLmgKQEAgLTEwNywxMCArMTA3LDYgQEAgc3RydWN0IHBnX2xvY2FsZV9zdHJ1Y3QKIAogdHlw ZWRlZiBzdHJ1Y3QgcGdfbG9jYWxlX3N0cnVjdCAqcGdfbG9jYWxlX3Q7CiAKLWV4dGVybiB2b2lk IG1ha2VfaWN1X2NvbGxhdG9yKGNvbnN0IGNoYXIgKmljdWxvY3N0ciwKLQkJCQkJCQkgIGNvbnN0 IGNoYXIgKmljdXJ1bGVzLAotCQkJCQkJCSAgc3RydWN0IHBnX2xvY2FsZV9zdHJ1Y3QgKnJlc3Vs dHApOwotCiBleHRlcm4gYm9vbCBwZ19sb2NhbGVfZGV0ZXJtaW5pc3RpYyhwZ19sb2NhbGVfdCBs b2NhbGUpOwogZXh0ZXJuIHZvaWQgaW5pdF9kYXRhYmFzZV9jb2xsYXRpb24odm9pZCk7CiBleHRl cm4gcGdfbG9jYWxlX3QgcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKE9pZCBjb2xsaWQpOwot LSAKMi4zNC4xCgo= --=-QUjbQ8Xz7nhm6c3/9brZ Content-Disposition: attachment; filename*0=v1-0003-For-collation-cache-use-CollationCacheContext-for.pat; filename*1=ch Content-Type: text/x-patch; name="v1-0003-For-collation-cache-use-CollationCacheContext-for.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBlMzk4NWFlMzU3NDY1NTg3OGFlNTNmNjMzOTBhMmY0YzcxNjdmZmZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBX ZWQsIDcgQXVnIDIwMjQgMTE6MzE6MzAgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxIDMvNV0gRm9y IGNvbGxhdGlvbiBjYWNoZSwgdXNlIENvbGxhdGlvbkNhY2hlQ29udGV4dCBmb3IgYWxsCiBtZW1v cnkuCgpDb21taXQgMDA1YzZiODMzZiBpbnRyb2R1Y2VkIENvbGxhdGlvbkNhY2hlQ29udGV4dCBm b3IgdGhlIGhhc2ggdGFibGUsCmJ1dCB0aGUgcGdfbG9jYWxlX3Qgb2JqZWN0cyB3ZXJlIHN0aWxs IGFsbG9jYXRlZCBpbgpUb3BNZW1vcnlDb250ZXh0LiBDaGFuZ2UgdG8gdXNlIENvbGxhdGlvbkNh Y2hlQ29udGV4dC4KClRoaXMgY2hhbmdlIHJlcXVpcmVkIGEgYml0IG9mIHJlZmFjdG9yaW5nIHRv IG1ha2UgdGhlIGNhbGxlciBvZgppbml0X3BnX2xvY2FsZSgpIHJlc3BvbnNpYmxlIGZvciBjb3B5 aW5nIHRvIHRoZSByaWdodCBjb250ZXh0LCBzbyB0aGF0CmluaXRfZGF0YWJhc2VfY29sbGF0aW9u KCkgY2FuIHN0aWxsIHVzZSBUb3BNZW1vcnlDb250ZXh0LgotLS0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9wZ19sb2NhbGUuYyB8IDc5ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvcGdfbG9jYWxlLmMKaW5kZXggMjBmYTRlYmUyYjIuLjU5ZmM5OWJkMTJiIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3BnX2xvY2FsZS5jCkBAIC0xNTIwLDExICsxNTIwLDExIEBAIGluaXRfZGF0YWJh c2VfY29sbGF0aW9uKHZvaWQpCiB9CiAKIC8qCi0gKiBDcmVhdGUgcGdfbG9jYWxlX3QgZnJvbSBj b2xsYXRpb24gb2lkIGluIFRvcE1lbW9yeUNvbnRleHQuCisgKiBDcmVhdGUgcGdfbG9jYWxlX3Qg ZnJvbSBjb2xsYXRpb24gb2lkLgogICoKLSAqIEZvciBzaW1wbGljaXR5LCB3ZSBhbHdheXMgZ2Vu ZXJhdGUgQ09MTEFURSArIENUWVBFIGV2ZW4gdGhvdWdoIHdlCi0gKiBtaWdodCBvbmx5IG5lZWQg b25lIG9mIHRoZW0uICBTaW5jZSB0aGlzIGlzIGNhbGxlZCBvbmx5IG9uY2UgcGVyIHNlc3Npb24s Ci0gKiBpdCBzaG91bGRuJ3QgY29zdCBtdWNoLgorICogRm9yIHNpbXBsaWNpdHksIHdlIGFsd2F5 cyBnZW5lcmF0ZSBDT0xMQVRFICsgQ1RZUEUgZXZlbiB0aG91Z2ggd2UgbWlnaHQKKyAqIG9ubHkg bmVlZCBvbmUgb2YgdGhlbS4gIFNpbmNlIHRoaXMgaXMgY2FsbGVkIG9ubHkgb25jZSBwZXIgc2Vz c2lvbiwgaXQKKyAqIHNob3VsZG4ndCBjb3N0IG11Y2guCiAgKi8KIHN0YXRpYyBwZ19sb2NhbGVf dAogaW5pdF9wZ19sb2NhbGUoT2lkIGNvbGxpZCkKQEAgLTE1MzIsOCArMTUzMiw3IEBAIGluaXRf cGdfbG9jYWxlKE9pZCBjb2xsaWQpCiAJLyogV2UgaGF2ZW4ndCBjb21wdXRlZCB0aGlzIHlldCBp biB0aGlzIHNlc3Npb24sIHNvIGRvIGl0ICovCiAJSGVhcFR1cGxlCXRwOwogCUZvcm1fcGdfY29s bGF0aW9uIGNvbGxmb3JtOwotCXN0cnVjdCBwZ19sb2NhbGVfc3RydWN0IHJlc3VsdDsKLQlwZ19s b2NhbGVfdCByZXN1bHRwOworCXBnX2xvY2FsZV90IHJlc3VsdDsKIAlEYXR1bQkJZGF0dW07CiAJ Ym9vbAkJaXNudWxsOwogCkBAIC0xNTQyLDEwICsxNTQxLDkgQEAgaW5pdF9wZ19sb2NhbGUoT2lk IGNvbGxpZCkKIAkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGNvbGxhdGlv biAldSIsIGNvbGxpZCk7CiAJY29sbGZvcm0gPSAoRm9ybV9wZ19jb2xsYXRpb24pIEdFVFNUUlVD VCh0cCk7CiAKLQkvKiBXZSdsbCBmaWxsIGluIHRoZSByZXN1bHQgc3RydWN0IGxvY2FsbHkgYmVm b3JlIGFsbG9jYXRpbmcgbWVtb3J5ICovCi0JbWVtc2V0KCZyZXN1bHQsIDAsIHNpemVvZihyZXN1 bHQpKTsKLQlyZXN1bHQucHJvdmlkZXIgPSBjb2xsZm9ybS0+Y29sbHByb3ZpZGVyOwotCXJlc3Vs dC5kZXRlcm1pbmlzdGljID0gY29sbGZvcm0tPmNvbGxpc2RldGVybWluaXN0aWM7CisJcmVzdWx0 ID0gcGFsbG9jMF9vYmplY3Qoc3RydWN0IHBnX2xvY2FsZV9zdHJ1Y3QpOworCXJlc3VsdC0+cHJv dmlkZXIgPSBjb2xsZm9ybS0+Y29sbHByb3ZpZGVyOworCXJlc3VsdC0+ZGV0ZXJtaW5pc3RpYyA9 IGNvbGxmb3JtLT5jb2xsaXNkZXRlcm1pbmlzdGljOwogCiAJaWYgKGNvbGxmb3JtLT5jb2xscHJv dmlkZXIgPT0gQ09MTFBST1ZJREVSX0JVSUxUSU4pCiAJewpAQCAtMTU1NCwxMyArMTU1MiwxMiBA QCBpbml0X3BnX2xvY2FsZShPaWQgY29sbGlkKQogCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5v dE51bGwoQ09MTE9JRCwgdHAsIEFudW1fcGdfY29sbGF0aW9uX2NvbGxsb2NhbGUpOwogCQlsb2Nz dHIgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKIAotCQlyZXN1bHQuY29sbGF0ZV9pc19j ID0gdHJ1ZTsKLQkJcmVzdWx0LmN0eXBlX2lzX2MgPSAoc3RyY21wKGxvY3N0ciwgIkMiKSA9PSAw KTsKKwkJcmVzdWx0LT5jb2xsYXRlX2lzX2MgPSB0cnVlOworCQlyZXN1bHQtPmN0eXBlX2lzX2Mg PSAoc3RyY21wKGxvY3N0ciwgIkMiKSA9PSAwKTsKIAogCQlidWlsdGluX3ZhbGlkYXRlX2xvY2Fs ZShHZXREYXRhYmFzZUVuY29kaW5nKCksIGxvY3N0cik7CiAKLQkJcmVzdWx0LmluZm8uYnVpbHRp bi5sb2NhbGUgPSBNZW1vcnlDb250ZXh0U3RyZHVwKFRvcE1lbW9yeUNvbnRleHQsCi0JCQkJCQkJ CQkJCQkJCSBsb2NzdHIpOworCQlyZXN1bHQtPmluZm8uYnVpbHRpbi5sb2NhbGUgPSBwc3RyZHVw KGxvY3N0cik7CiAJfQogCWVsc2UgaWYgKGNvbGxmb3JtLT5jb2xscHJvdmlkZXIgPT0gQ09MTFBS T1ZJREVSX0xJQkMpCiAJewpAQCAtMTU3MiwxMiArMTU2OSwxMiBAQCBpbml0X3BnX2xvY2FsZShP aWQgY29sbGlkKQogCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoQ09MTE9JRCwgdHAs IEFudW1fcGdfY29sbGF0aW9uX2NvbGxjdHlwZSk7CiAJCWNvbGxjdHlwZSA9IFRleHREYXR1bUdl dENTdHJpbmcoZGF0dW0pOwogCi0JCXJlc3VsdC5jb2xsYXRlX2lzX2MgPSAoc3RyY21wKGNvbGxj b2xsYXRlLCAiQyIpID09IDApIHx8CisJCXJlc3VsdC0+Y29sbGF0ZV9pc19jID0gKHN0cmNtcChj b2xsY29sbGF0ZSwgIkMiKSA9PSAwKSB8fAogCQkJKHN0cmNtcChjb2xsY29sbGF0ZSwgIlBPU0lY IikgPT0gMCk7Ci0JCXJlc3VsdC5jdHlwZV9pc19jID0gKHN0cmNtcChjb2xsY3R5cGUsICJDIikg PT0gMCkgfHwKKwkJcmVzdWx0LT5jdHlwZV9pc19jID0gKHN0cmNtcChjb2xsY3R5cGUsICJDIikg PT0gMCkgfHwKIAkJCShzdHJjbXAoY29sbGN0eXBlLCAiUE9TSVgiKSA9PSAwKTsKIAotCQlyZXN1 bHQuaW5mby5sdCA9IG1ha2VfbGliY19jb2xsYXRvcihjb2xsY29sbGF0ZSwgY29sbGN0eXBlKTsK KwkJcmVzdWx0LT5pbmZvLmx0ID0gbWFrZV9saWJjX2NvbGxhdG9yKGNvbGxjb2xsYXRlLCBjb2xs Y3R5cGUpOwogCX0KIAllbHNlIGlmIChjb2xsZm9ybS0+Y29sbHByb3ZpZGVyID09IENPTExQUk9W SURFUl9JQ1UpCiAJewpAQCAtMTU4OCw4ICsxNTg1LDggQEAgaW5pdF9wZ19sb2NhbGUoT2lkIGNv bGxpZCkKIAkJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTExPSUQsIHRwLCBBbnVt X3BnX2NvbGxhdGlvbl9jb2xsbG9jYWxlKTsKIAkJaWN1bG9jc3RyID0gVGV4dERhdHVtR2V0Q1N0 cmluZyhkYXR1bSk7CiAKLQkJcmVzdWx0LmNvbGxhdGVfaXNfYyA9IGZhbHNlOwotCQlyZXN1bHQu Y3R5cGVfaXNfYyA9IGZhbHNlOworCQlyZXN1bHQtPmNvbGxhdGVfaXNfYyA9IGZhbHNlOworCQly ZXN1bHQtPmN0eXBlX2lzX2MgPSBmYWxzZTsKIAogCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihD T0xMT0lELCB0cCwgQW51bV9wZ19jb2xsYXRpb25fY29sbGljdXJ1bGVzLCAmaXNudWxsKTsKIAkJ aWYgKCFpc251bGwpCkBAIC0xNTk3LDggKzE1OTQsOCBAQCBpbml0X3BnX2xvY2FsZShPaWQgY29s bGlkKQogCQllbHNlCiAJCQlpY3VydWxlcyA9IE5VTEw7CiAKLQkJcmVzdWx0LmluZm8uaWN1LnVj b2wgPSBtYWtlX2ljdV9jb2xsYXRvcihpY3Vsb2NzdHIsIGljdXJ1bGVzKTsKLQkJcmVzdWx0Lmlu Zm8uaWN1LmxvY2FsZSA9IE1lbW9yeUNvbnRleHRTdHJkdXAoVG9wTWVtb3J5Q29udGV4dCwgaWN1 bG9jc3RyKTsKKwkJcmVzdWx0LT5pbmZvLmljdS51Y29sID0gbWFrZV9pY3VfY29sbGF0b3IoaWN1 bG9jc3RyLCBpY3VydWxlcyk7CisJCXJlc3VsdC0+aW5mby5pY3UubG9jYWxlID0gcHN0cmR1cChp Y3Vsb2NzdHIpOwogI2Vsc2UJCQkJCQkJLyogbm90IFVTRV9JQ1UgKi8KIAkJLyogY291bGQgZ2V0 IGhlcmUgaWYgYSBjb2xsYXRpb24gd2FzIGNyZWF0ZWQgYnkgYSBidWlsZCB3aXRoIElDVSAqLwog CQllcmVwb3J0KEVSUk9SLApAQCAtMTY1MSwxMSArMTY0OCw3IEBAIGluaXRfcGdfbG9jYWxlKE9p ZCBjb2xsaWQpCiAKIAlSZWxlYXNlU3lzQ2FjaGUodHApOwogCi0JLyogV2UnbGwga2VlcCB0aGUg cGdfbG9jYWxlX3Qgc3RydWN0dXJlcyBpbiBUb3BNZW1vcnlDb250ZXh0ICovCi0JcmVzdWx0cCA9 IE1lbW9yeUNvbnRleHRBbGxvYyhUb3BNZW1vcnlDb250ZXh0LCBzaXplb2YoKnJlc3VsdHApKTsK LQkqcmVzdWx0cCA9IHJlc3VsdDsKLQotCXJldHVybiByZXN1bHRwOworCXJldHVybiByZXN1bHQ7 CiB9CiAKIC8qCkBAIC0xNjkzLDcgKzE2ODYsMzkgQEAgcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0 aW9uKE9pZCBjb2xsaWQpCiAKIAljYWNoZV9lbnRyeSA9IGNvbGxhdGlvbl9jYWNoZV9pbnNlcnQo Q29sbGF0aW9uQ2FjaGUsIGNvbGxpZCwgJmZvdW5kKTsKIAlpZiAoIWZvdW5kIHx8ICFjYWNoZV9l bnRyeS0+bG9jYWxlKQotCQljYWNoZV9lbnRyeS0+bG9jYWxlID0gaW5pdF9wZ19sb2NhbGUoY29s bGlkKTsKKwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwkJcGdfbG9jYWxlX3QgdG1w bG9jYWxlOworCQlwZ19sb2NhbGVfdCBsb2NhbGU7CisKKwkJdG1wbG9jYWxlID0gaW5pdF9wZ19s b2NhbGUoY29sbGlkKTsKKworCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKENv bGxhdGlvbkNhY2hlQ29udGV4dCk7CisKKwkJbG9jYWxlID0gcGFsbG9jMF9vYmplY3Qoc3RydWN0 IHBnX2xvY2FsZV9zdHJ1Y3QpOworCQkqbG9jYWxlID0gKnRtcGxvY2FsZTsKKworCQkvKiBkZWVw IGNvcHkgKi8KKwkJaWYgKGxvY2FsZS0+cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0JVSUxUSU4p CisJCXsKKwkJCWxvY2FsZS0+aW5mby5idWlsdGluLmxvY2FsZSA9IHBzdHJkdXAobG9jYWxlLT5p bmZvLmJ1aWx0aW4ubG9jYWxlKTsKKwkJfQorI2lmZGVmIFVTRV9JQ1UKKwkJZWxzZSBpZiAobG9j YWxlLT5wcm92aWRlciA9PSBDT0xMUFJPVklERVJfSUNVKQorCQl7CisJCQlsb2NhbGUtPmluZm8u aWN1LmxvY2FsZSA9IHBzdHJkdXAobG9jYWxlLT5pbmZvLmljdS5sb2NhbGUpOworCQl9CisjZW5k aWYKKwkJZWxzZSBpZiAobG9jYWxlLT5wcm92aWRlciAhPSBDT0xMUFJPVklERVJfTElCQykKKwkJ eworCQkJLyogc2hvdWxkbid0IGhhcHBlbiAqLworCQkJUEdMT0NBTEVfU1VQUE9SVF9FUlJPUihs b2NhbGUtPnByb3ZpZGVyKTsKKwkJfQorCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250 ZXh0KTsKKworCQljYWNoZV9lbnRyeS0+bG9jYWxlID0gbG9jYWxlOworCX0KIAogCXJldHVybiBj YWNoZV9lbnRyeS0+bG9jYWxlOwogfQotLSAKMi4zNC4xCgo= --=-QUjbQ8Xz7nhm6c3/9brZ Content-Disposition: attachment; filename*0=v1-0004-Use-resource-owners-to-track-locale_t-and-ICU-col.pat; filename*1=ch Content-Type: text/x-patch; name="v1-0004-Use-resource-owners-to-track-locale_t-and-ICU-col.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA5ZWYxNDg3NGUzZWExOWVkYmVkOGM3YWEzZDg1NTQyNGVhMzMwOTM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBX ZWQsIDcgQXVnIDIwMjQgMTI6MjU6MzcgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxIDQvNV0gVXNl IHJlc291cmNlIG93bmVycyB0byB0cmFjayBsb2NhbGVfdCBhbmQgSUNVIGNvbGxhdG9yCiBvYmpl Y3RzLgoKUmF0aGVyIHRoYW4gcmVseSBvbiBjYXJlZnVsIG9yZGVyaW5nIG9mIG9wZXJhdGlvbnMg aW4gZXJyb3IgcGF0aHMsCnRyYWNrIGNvbGxhdG9yIG9iamVjdHMgd2l0aCBDdXJyZW50UmVzb3Vy Y2VPd25lciBzb29uIGFmdGVyIHRoZXkgYXJlCmFsbG9jYXRlZC4gVGhlbiwgbW92ZSB0aGVtIHRv IHRoZSBuZXcgQ29sbGF0aW9uQ2FjaGVPd25lciB3aGVuIHRoZQpwZ19sb2NhbGVfdCBpcyBzdWNj ZXNzZnVsbHkgYWxsb2NhdGVkLCByaWdodCBhZnRlciBjb3B5aW5nIHRoZSBtZW1vcnkKdG8gQ29s bGF0aW9uQ2FjaGVDb250ZXh0LgotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUu YyB8IDk0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCA5 MSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ19sb2NhbGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUu YwppbmRleCA1OWZjOTliZDEyYi4uMmFhZjExYWYwOWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ19sb2NhbGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9j YWxlLmMKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNp bmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3BnX2xvY2FsZS5oIgor I2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIK IAogI2lmZGVmIFVTRV9JQ1UKQEAgLTE1MSw2ICsxNTIsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QKIHN0 YXRpYyBNZW1vcnlDb250ZXh0IENvbGxhdGlvbkNhY2hlQ29udGV4dCA9IE5VTEw7CiBzdGF0aWMg Y29sbGF0aW9uX2NhY2hlX2hhc2ggKkNvbGxhdGlvbkNhY2hlID0gTlVMTDsKIAorLyoKKyAqIENv bGxhdG9yIG9iamVjdHMgKFVDb2xsYXRvciBmb3IgSUNVIG9yIGxvY2FsZV90IGZvciBsaWJjKSBh cmUgYWxsb2NhdGVkIGluCisgKiBhbiBleHRlcm5hbCBsaWJyYXJ5LCBzbyB0cmFjayB0aGVtIHVz aW5nIGEgcmVzb3VyY2Ugb3duZXIuIFdoaWxlIHN0aWxsCisgKiBpbml0aWFsaXppbmcgdGhlIHBn X2xvY2FsZV90IHN0cnVjdHVyZSwgdGhlIGNvbGxhdG9ycyBhcmUgb3duZWQgYnkKKyAqIEN1cnJl bnRSZXNvdXJjZU93bmVyLCBzbyB0aGF0IHRoZXkgYXJlIHJlbGVhc2VkIGlmIGFuIGVycm9yIGlz IGVuY291bnRlcmVkCisgKiBwYXJ0d2F5IHRocm91Z2guIEFmdGVyIHRoZSBwZ19sb2NhbGVfdCBp cyBmdWxseSBpbml0aWFsaXplZCwgdGhlIGNvbGxhdG9ycworICogYXJlIHRyYW5zZmVycmVkIHRv IENvbGxhdGlvbkNhY2hlT3duZXIuCisgKi8KK3N0YXRpYyBSZXNvdXJjZU93bmVyIENvbGxhdGlv bkNhY2hlT3duZXIgPSBOVUxMOworCiAjaWYgZGVmaW5lZChXSU4zMikgJiYgZGVmaW5lZChMQ19N RVNTQUdFUykKIHN0YXRpYyBjaGFyICpJc29Mb2NhbGVOYW1lKGNvbnN0IGNoYXIgKik7CiAjZW5k aWYKQEAgLTE3NCw2ICsxODUsNTEgQEAgc3RhdGljIHZvaWQgaWN1X3NldF9jb2xsYXRpb25fYXR0 cmlidXRlcyhVQ29sbGF0b3IgKmNvbGxhdG9yLCBjb25zdCBjaGFyICpsb2MsCiAJCQkJCQkJCQkJ IFVFcnJvckNvZGUgKnN0YXR1cyk7CiAjZW5kaWYKIAorc3RhdGljIHZvaWQgUmVzT3duZXJSZWxl YXNlTG9jYWxlVChEYXR1bSB2YWwpOworCisjaWZkZWYgVVNFX0lDVQorc3RhdGljIHZvaWQgUmVz T3duZXJSZWxlYXNlSUNVQ29sbGF0b3IoRGF0dW0gdmFsKTsKKworc3RhdGljIGNvbnN0IFJlc291 cmNlT3duZXJEZXNjIElDVUNvbGxhdG9yUmVzb3VyY2VLaW5kID0KK3sKKwkubmFtZSA9ICJJQ1Ug Y29sbGF0b3IgcmVmZXJlbmNlIiwKKwkucmVsZWFzZV9waGFzZSA9IFJFU09VUkNFX1JFTEVBU0Vf QUZURVJfTE9DS1MsCisJLnJlbGVhc2VfcHJpb3JpdHkgPSBSRUxFQVNFX1BSSU9fTEFTVCwKKwku UmVsZWFzZVJlc291cmNlID0gUmVzT3duZXJSZWxlYXNlSUNVQ29sbGF0b3IsCisJLkRlYnVnUHJp bnQgPSBOVUxMCQkJLyogdGhlIGRlZmF1bHQgbWVzc2FnZSBpcyBmaW5lICovCit9OworCitzdGF0 aWMgdm9pZAorUmVzT3duZXJSZWxlYXNlSUNVQ29sbGF0b3IoRGF0dW0gdmFsKQoreworCVVDb2xs YXRvciAgKnVjb2wgPSAoVUNvbGxhdG9yICopIERhdHVtR2V0UG9pbnRlcih2YWwpOworCisJdWNv bF9jbG9zZSh1Y29sKTsKK30KKworI2VuZGlmCisKK3N0YXRpYyBjb25zdCBSZXNvdXJjZU93bmVy RGVzYyBMb2NhbGVUUmVzb3VyY2VLaW5kID0KK3sKKwkubmFtZSA9ICJsb2NhbGVfdCByZWZlcmVu Y2UiLAorCS5yZWxlYXNlX3BoYXNlID0gUkVTT1VSQ0VfUkVMRUFTRV9BRlRFUl9MT0NLUywKKwku cmVsZWFzZV9wcmlvcml0eSA9IFJFTEVBU0VfUFJJT19MQVNULAorCS5SZWxlYXNlUmVzb3VyY2Ug PSBSZXNPd25lclJlbGVhc2VMb2NhbGVULAorCS5EZWJ1Z1ByaW50ID0gTlVMTAkJCS8qIHRoZSBk ZWZhdWx0IG1lc3NhZ2UgaXMgZmluZSAqLworfTsKKworc3RhdGljIHZvaWQKK1Jlc093bmVyUmVs ZWFzZUxvY2FsZVQoRGF0dW0gdmFsKQoreworCWxvY2FsZV90CWxvYyA9IChsb2NhbGVfdCkgRGF0 dW1HZXRQb2ludGVyKHZhbCk7CisKKyNpZm5kZWYgV0lOMzIKKwlmcmVlbG9jYWxlKGxvYyk7Cisj ZWxzZQorCV9mcmVlX2xvY2FsZShsb2MpOworI2VuZGlmCit9CisKIC8qCiAgKiBQT1NJWCBkb2Vz bid0IGRlZmluZSBfbC12YXJpYW50cyBvZiB0aGVzZSBmdW5jdGlvbnMsIGJ1dCBzZXZlcmFsIHN5 c3RlbXMKICAqIGhhdmUgdGhlbS4gIFdlIHByb3ZpZGUgb3VyIG93biByZXBsYWNlbWVudHMgaGVy ZS4KQEAgLTE1NzQsNyArMTYzMCwxMiBAQCBpbml0X3BnX2xvY2FsZShPaWQgY29sbGlkKQogCQly ZXN1bHQtPmN0eXBlX2lzX2MgPSAoc3RyY21wKGNvbGxjdHlwZSwgIkMiKSA9PSAwKSB8fAogCQkJ KHN0cmNtcChjb2xsY3R5cGUsICJQT1NJWCIpID09IDApOwogCisJCVJlc291cmNlT3duZXJFbmxh cmdlKEN1cnJlbnRSZXNvdXJjZU93bmVyKTsKIAkJcmVzdWx0LT5pbmZvLmx0ID0gbWFrZV9saWJj X2NvbGxhdG9yKGNvbGxjb2xsYXRlLCBjb2xsY3R5cGUpOworCQlpZiAocmVzdWx0LT5pbmZvLmx0 ICE9IE5VTEwpCisJCQlSZXNvdXJjZU93bmVyUmVtZW1iZXIoQ3VycmVudFJlc291cmNlT3duZXIs CisJCQkJCQkJCSAgUG9pbnRlckdldERhdHVtKHJlc3VsdC0+aW5mby5sdCksCisJCQkJCQkJCSAg JkxvY2FsZVRSZXNvdXJjZUtpbmQpOwogCX0KIAllbHNlIGlmIChjb2xsZm9ybS0+Y29sbHByb3Zp ZGVyID09IENPTExQUk9WSURFUl9JQ1UpCiAJewpAQCAtMTU5NCw3ICsxNjU1LDExIEBAIGluaXRf cGdfbG9jYWxlKE9pZCBjb2xsaWQpCiAJCWVsc2UKIAkJCWljdXJ1bGVzID0gTlVMTDsKIAorCQlS ZXNvdXJjZU93bmVyRW5sYXJnZShDdXJyZW50UmVzb3VyY2VPd25lcik7CiAJCXJlc3VsdC0+aW5m by5pY3UudWNvbCA9IG1ha2VfaWN1X2NvbGxhdG9yKGljdWxvY3N0ciwgaWN1cnVsZXMpOworCQlB c3NlcnQocmVzdWx0LT5pbmZvLmljdS51Y29sICE9IE5VTEwpOworCQlSZXNvdXJjZU93bmVyUmVt ZW1iZXIoQ3VycmVudFJlc291cmNlT3duZXIsIFBvaW50ZXJHZXREYXR1bShyZXN1bHQtPmluZm8u aWN1LnVjb2wpLAorCQkJCQkJCSAgJklDVUNvbGxhdG9yUmVzb3VyY2VLaW5kKTsKIAkJcmVzdWx0 LT5pbmZvLmljdS5sb2NhbGUgPSBwc3RyZHVwKGljdWxvY3N0cik7CiAjZWxzZQkJCQkJCQkvKiBu b3QgVVNFX0lDVSAqLwogCQkvKiBjb3VsZCBnZXQgaGVyZSBpZiBhIGNvbGxhdGlvbiB3YXMgY3Jl YXRlZCBieSBhIGJ1aWxkIHdpdGggSUNVICovCkBAIC0xNjc3LDYgKzE3NDIsNyBAQCBwZ19uZXds b2NhbGVfZnJvbV9jb2xsYXRpb24oT2lkIGNvbGxpZCkKIAkgKi8KIAlpZiAoQ29sbGF0aW9uQ2Fj aGUgPT0gTlVMTCkKIAl7CisJCUNvbGxhdGlvbkNhY2hlT3duZXIgPSBSZXNvdXJjZU93bmVyQ3Jl YXRlKE5VTEwsICJjb2xsYXRpb24gY2FjaGUiKTsKIAkJQ29sbGF0aW9uQ2FjaGVDb250ZXh0ID0g QWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcE1lbW9yeUNvbnRleHQsCiAJCQkJCQkJCQkJCQkJICAi Y29sbGF0aW9uIGNhY2hlIiwKIAkJCQkJCQkJCQkJCQkgIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMp OwpAQCAtMTY5MSwxNCArMTc1NywyMCBAQCBwZ19uZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oT2lk IGNvbGxpZCkKIAkJcGdfbG9jYWxlX3QgdG1wbG9jYWxlOwogCQlwZ19sb2NhbGVfdCBsb2NhbGU7 CiAKKwkJUmVzb3VyY2VPd25lckVubGFyZ2UoQ29sbGF0aW9uQ2FjaGVPd25lcik7CisKIAkJdG1w bG9jYWxlID0gaW5pdF9wZ19sb2NhbGUoY29sbGlkKTsKIAorCQkvKgorCQkgKiBEZWVwIGNvcHkg dGhlIG1lbW9yeSBpbnRvIENvbGxhdGlvbkNhY2hlQ29udGV4dCBhbmQgcmVhc3NpZ24gdGhlCisJ CSAqIGNvbGxhdG9ycyB0byBDb2xsYXRpb25DYWNoZU93bmVyLgorCQkgKi8KKwogCQlvbGRjb250 ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKENvbGxhdGlvbkNhY2hlQ29udGV4dCk7CiAKIAkJ bG9jYWxlID0gcGFsbG9jMF9vYmplY3Qoc3RydWN0IHBnX2xvY2FsZV9zdHJ1Y3QpOwogCQkqbG9j YWxlID0gKnRtcGxvY2FsZTsKIAotCQkvKiBkZWVwIGNvcHkgKi8KIAkJaWYgKGxvY2FsZS0+cHJv dmlkZXIgPT0gQ09MTFBST1ZJREVSX0JVSUxUSU4pCiAJCXsKIAkJCWxvY2FsZS0+aW5mby5idWls dGluLmxvY2FsZSA9IHBzdHJkdXAobG9jYWxlLT5pbmZvLmJ1aWx0aW4ubG9jYWxlKTsKQEAgLTE3 MDcsMTMgKzE3NzksMjkgQEAgcGdfbmV3bG9jYWxlX2Zyb21fY29sbGF0aW9uKE9pZCBjb2xsaWQp CiAJCWVsc2UgaWYgKGxvY2FsZS0+cHJvdmlkZXIgPT0gQ09MTFBST1ZJREVSX0lDVSkKIAkJewog CQkJbG9jYWxlLT5pbmZvLmljdS5sb2NhbGUgPSBwc3RyZHVwKGxvY2FsZS0+aW5mby5pY3UubG9j YWxlKTsKKwkJCUFzc2VydChsb2NhbGUtPmluZm8uaWN1LnVjb2wgIT0gTlVMTCk7CisJCQlSZXNv dXJjZU93bmVyRm9yZ2V0KEN1cnJlbnRSZXNvdXJjZU93bmVyLAorCQkJCQkJCQlQb2ludGVyR2V0 RGF0dW0obG9jYWxlLT5pbmZvLmljdS51Y29sKSwKKwkJCQkJCQkJJklDVUNvbGxhdG9yUmVzb3Vy Y2VLaW5kKTsKKwkJCVJlc291cmNlT3duZXJSZW1lbWJlcihDb2xsYXRpb25DYWNoZU93bmVyLAor CQkJCQkJCQkgIFBvaW50ZXJHZXREYXR1bShsb2NhbGUtPmluZm8uaWN1LnVjb2wpLAorCQkJCQkJ CQkgICZJQ1VDb2xsYXRvclJlc291cmNlS2luZCk7CiAJCX0KICNlbmRpZgotCQllbHNlIGlmIChs b2NhbGUtPnByb3ZpZGVyICE9IENPTExQUk9WSURFUl9MSUJDKQorCQllbHNlIGlmIChsb2NhbGUt PnByb3ZpZGVyID09IENPTExQUk9WSURFUl9MSUJDKQogCQl7CisJCQkvKiBtYXkgYmUgTlVMTCBp ZiBsb2NhbGUgaXMgIkMiIG9yICJQT1NJWCIgKi8KKwkJCWlmIChsb2NhbGUtPmluZm8ubHQgIT0g TlVMTCkKKwkJCXsKKwkJCQlSZXNvdXJjZU93bmVyRm9yZ2V0KEN1cnJlbnRSZXNvdXJjZU93bmVy LCBQb2ludGVyR2V0RGF0dW0obG9jYWxlLT5pbmZvLmx0KSwKKwkJCQkJCQkJCSZMb2NhbGVUUmVz b3VyY2VLaW5kKTsKKwkJCQlSZXNvdXJjZU93bmVyUmVtZW1iZXIoQ29sbGF0aW9uQ2FjaGVPd25l ciwgUG9pbnRlckdldERhdHVtKGxvY2FsZS0+aW5mby5sdCksCisJCQkJCQkJCQkgICZMb2NhbGVU UmVzb3VyY2VLaW5kKTsKKwkJCX0KKwkJfQorCQllbHNlCiAJCQkvKiBzaG91bGRuJ3QgaGFwcGVu ICovCiAJCQlQR0xPQ0FMRV9TVVBQT1JUX0VSUk9SKGxvY2FsZS0+cHJvdmlkZXIpOwotCQl9CiAK IAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCi0tIAoyLjM0LjEKCg== --=-QUjbQ8Xz7nhm6c3/9brZ Content-Disposition: attachment; filename="v1-0005-Invalidate-collation-cache-when-appropriate.patch" Content-Type: text/x-patch; name="v1-0005-Invalidate-collation-cache-when-appropriate.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA3ZTA0ZjgxZDgyNWJjZGRmMmM1ZWMzZTdhMTU2ZjMwYzhkMWI2N2ViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBX ZWQsIDcgQXVnIDIwMjQgMTM6MDM6MzIgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxIDUvNV0gSW52 YWxpZGF0ZSBjb2xsYXRpb24gY2FjaGUgd2hlbiBhcHByb3ByaWF0ZS4KClByZXZpb3VzbHksIERS T1AgQ09MTEFUSU9OIGNvdWxkIGxlYXZlIGEgY2FjaGUgZW50cnkgYXJvdW5kLiBUaGF0J3MKbm90 IG5vcm1hbGx5IGEgcHJvYmxlbSwgYnV0IGNhbiBiZSBpZiBvaWQgd3JhcGFyb3VuZCBjYXVzZXMg dGhlIHNhbWUKb2lkIHRvIGJlIHJldXNlZCBmb3IgYSBkaWZmZXJlbnQgY29sbGF0aW9uLgotLS0K IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19sb2NhbGUuYyB8IDM2ICsrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAxMCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMKaW5kZXggMmFhZjExYWYwOWIuLjdj NWFiYjVlY2EzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfbG9jYWxlLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2xvY2FsZS5jCkBAIC02Myw2ICs2Myw3IEBA CiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9mb3JtYXR0aW5n LmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tzLmgiCisjaW5jbHVkZSAidXRpbHMvaW52YWwu aCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGls cy5oIgogI2luY2x1ZGUgInV0aWxzL3BnX2xvY2FsZS5oIgpAQCAtMTU4LDcgKzE1OSw4IEBAIHN0 YXRpYyBjb2xsYXRpb25fY2FjaGVfaGFzaCAqQ29sbGF0aW9uQ2FjaGUgPSBOVUxMOwogICogaW5p dGlhbGl6aW5nIHRoZSBwZ19sb2NhbGVfdCBzdHJ1Y3R1cmUsIHRoZSBjb2xsYXRvcnMgYXJlIG93 bmVkIGJ5CiAgKiBDdXJyZW50UmVzb3VyY2VPd25lciwgc28gdGhhdCB0aGV5IGFyZSByZWxlYXNl ZCBpZiBhbiBlcnJvciBpcyBlbmNvdW50ZXJlZAogICogcGFydHdheSB0aHJvdWdoLiBBZnRlciB0 aGUgcGdfbG9jYWxlX3QgaXMgZnVsbHkgaW5pdGlhbGl6ZWQsIHRoZSBjb2xsYXRvcnMKLSAqIGFy ZSB0cmFuc2ZlcnJlZCB0byBDb2xsYXRpb25DYWNoZU93bmVyLgorICogYXJlIHRyYW5zZmVycmVk IHRvIENvbGxhdGlvbkNhY2hlT3duZXIsIHdoaWNoIGxhc3RzIHVudGlsIHRoZSBuZXh0IGNhY2hl CisgKiBpbnZhbGlkYXRpb24uCiAgKi8KIHN0YXRpYyBSZXNvdXJjZU93bmVyIENvbGxhdGlvbkNh Y2hlT3duZXIgPSBOVUxMOwogCkBAIC0xNDg0LDYgKzE0ODYsMjMgQEAgcGdfbG9jYWxlX2RldGVy bWluaXN0aWMocGdfbG9jYWxlX3QgbG9jYWxlKQogCXJldHVybiBsb2NhbGUtPmRldGVybWluaXN0 aWM7CiB9CiAKK3N0YXRpYyB2b2lkCitDb2xsYXRpb25DYWNoZUludmFsaWRhdGUoRGF0dW0gYXJn LCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKK3sKKwkvKiBmcmVlIGFsbCBtZW1vcnkg YW5kIHJlc2V0IGhhc2ggdGFibGUgKi8KKwlNZW1vcnlDb250ZXh0UmVzZXQoQ29sbGF0aW9uQ2Fj aGVDb250ZXh0KTsKKwlDb2xsYXRpb25DYWNoZSA9IGNvbGxhdGlvbl9jYWNoZV9jcmVhdGUoQ29s bGF0aW9uQ2FjaGVDb250ZXh0LAorCQkJCQkJCQkJCQkxNiwgTlVMTCk7CisKKwkvKiByZWxlYXNl IElDVSBjb2xsYXRvciBhbmQgbG9jYWxlX3Qgb2JqZWN0cyAqLworI2lmZGVmIFVTRV9JQ1UKKwlS ZXNvdXJjZU93bmVyUmVsZWFzZUFsbE9mS2luZChDb2xsYXRpb25DYWNoZU93bmVyLAorCQkJCQkJ CQkgICZJQ1VDb2xsYXRvclJlc291cmNlS2luZCk7CisjZW5kaWYKKwlSZXNvdXJjZU93bmVyUmVs ZWFzZUFsbE9mS2luZChDb2xsYXRpb25DYWNoZU93bmVyLAorCQkJCQkJCQkgICZMb2NhbGVUUmVz b3VyY2VLaW5kKTsKK30KKwogLyoKICAqIEluaXRpYWxpemUgZGVmYXVsdF9sb2NhbGUgd2l0aCBk YXRhYmFzZSBsb2NhbGUgc2V0dGluZ3MuCiAgKi8KQEAgLTE3MzIsMTQgKzE3NTEsNyBAQCBwZ19u ZXdsb2NhbGVfZnJvbV9jb2xsYXRpb24oT2lkIGNvbGxpZCkKIAlpZiAoY29sbGlkID09IERFRkFV TFRfQ09MTEFUSU9OX09JRCkKIAkJcmV0dXJuICZkZWZhdWx0X2xvY2FsZTsKIAotCS8qCi0JICog Q2FjaGUgbWVjaGFuaXNtIGZvciBjb2xsYXRpb24gaW5mb3JtYXRpb24uCi0JICoKLQkgKiBOb3Rl IHRoYXQgd2UgY3VycmVudGx5IGxhY2sgYW55IHdheSB0byBmbHVzaCB0aGUgY2FjaGUuICBTaW5j ZSB3ZSBkb24ndAotCSAqIHN1cHBvcnQgQUxURVIgQ09MTEFUSU9OLCB0aGlzIGlzIE9LLiAgVGhl IHdvcnN0IGNhc2UgaXMgdGhhdCBzb21lb25lCi0JICogZHJvcHMgYSBjb2xsYXRpb24sIGFuZCBh IHVzZWxlc3MgY2FjaGUgZW50cnkgaGFuZ3MgYXJvdW5kIGluIGV4aXN0aW5nCi0JICogYmFja2Vu ZHMuCi0JICovCisJLyogY2FjaGUgbWVjaGFuaXNtIGZvciBjb2xsYXRpb24gaW5mb3JtYXRpb24g Ki8KIAlpZiAoQ29sbGF0aW9uQ2FjaGUgPT0gTlVMTCkKIAl7CiAJCUNvbGxhdGlvbkNhY2hlT3du ZXIgPSBSZXNvdXJjZU93bmVyQ3JlYXRlKE5VTEwsICJjb2xsYXRpb24gY2FjaGUiKTsKQEAgLTE3 NDgsNiArMTc2MCw5IEBAIHBnX25ld2xvY2FsZV9mcm9tX2NvbGxhdGlvbihPaWQgY29sbGlkKQog CQkJCQkJCQkJCQkJCSAgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CiAJCUNvbGxhdGlvbkNhY2hl ID0gY29sbGF0aW9uX2NhY2hlX2NyZWF0ZShDb2xsYXRpb25DYWNoZUNvbnRleHQsCiAJCQkJCQkJ CQkJCQkxNiwgTlVMTCk7CisJCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKENPTExPSUQs CisJCQkJCQkJCQkgIENvbGxhdGlvbkNhY2hlSW52YWxpZGF0ZSwKKwkJCQkJCQkJCSAgKERhdHVt KSAwKTsKIAl9CiAKIAljYWNoZV9lbnRyeSA9IGNvbGxhdGlvbl9jYWNoZV9pbnNlcnQoQ29sbGF0 aW9uQ2FjaGUsIGNvbGxpZCwgJmZvdW5kKTsKQEAgLTE3NjMsNyArMTc3OCw4IEBAIHBnX25ld2xv Y2FsZV9mcm9tX2NvbGxhdGlvbihPaWQgY29sbGlkKQogCiAJCS8qCiAJCSAqIERlZXAgY29weSB0 aGUgbWVtb3J5IGludG8gQ29sbGF0aW9uQ2FjaGVDb250ZXh0IGFuZCByZWFzc2lnbiB0aGUKLQkJ ICogY29sbGF0b3JzIHRvIENvbGxhdGlvbkNhY2hlT3duZXIuCisJCSAqIGNvbGxhdG9ycyB0byBD b2xsYXRpb25DYWNoZU93bmVyLCB3aGljaCBsYXN0IHVudGlsIHRoZSBuZXh0IGNhY2hlCisJCSAq IGludmFsaWRhdGlvbi4KIAkJICovCiAKIAkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhDb2xsYXRpb25DYWNoZUNvbnRleHQpOwotLSAKMi4zNC4xCgo= --=-QUjbQ8Xz7nhm6c3/9brZ--