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.96) (envelope-from ) id 1vSWLl-00GqP2-2T for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Dec 2025 08:12:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vSWLk-00FXEV-19 for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Dec 2025 08:12:04 +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.96) (envelope-from ) id 1vSWLj-00FXEN-3A for pgsql-hackers@lists.postgresql.org; Mon, 08 Dec 2025 08:12:04 +0000 Received: from mail-ej1-x634.google.com ([2a00:1450:4864:20::634]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vSWLi-003oNS-1P for pgsql-hackers@lists.postgresql.org; Mon, 08 Dec 2025 08:12:04 +0000 Received: by mail-ej1-x634.google.com with SMTP id a640c23a62f3a-b72b495aa81so610064966b.2 for ; Mon, 08 Dec 2025 00:12:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1765181521; x=1765786321; darn=lists.postgresql.org; h=in-reply-to:references:to:subject:cc:from:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=YrdHiHUavKdKQUBvDU4YiQeRg0OkuYmB3ArszPtPhr8=; b=l82fVw3dFHPHowElFWOiBFsnLx2FTsKXYyJKl6jYmiGN8qFJAnZ6p3/5qBr/MhMwxo VhzIFfLVb2UPcNL7EubuiM7lAUFHrPykIjcaKJVLcYTSW3yNktGA6f0HWSJt6cKtyyQy ugWqtmDRYbgD/hMa/RisjuaHAv3WALKaO+jurkiv71OWSD0SAhtU9RdJfQ9zuj3lX9by tDpZHka02+OJOqImwY1IvejZNfwD+DIO+SpJLfb0zleWaxjm0xNn5b1x5HNzhO7CUbwn S7Tq8NRYZKA5guFN1Kz9EEjKWI/IDX2C7M4pXM2iy8ANSaT+NNg90T5pukx7nXlIBBun qBVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765181521; x=1765786321; h=in-reply-to:references:to:subject:cc:from:message-id:date :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=YrdHiHUavKdKQUBvDU4YiQeRg0OkuYmB3ArszPtPhr8=; b=mMfeFXZAYrTCP52FqSgqgEuyT6K6eS6hDd82MmxKEnquoa3SJ5eZspL8hR8O8dR0W0 uwPji81TU3FeS1sgC4Bk+kut+DelmghSiKE8PPQgE7KKhGh9TPe7+XvHiHOLbqFkRC/H njkxa4hZahYf1zFmxYp3UrTb9APYUrs9rS0e5pwmjCRTSEYIX44OOt43uAjCoEnZDBRs pBBaHtdIe08BbIjWNA1Dr424BmOTB3ZeBvdl2sESNQ3ZEmvnh3y7qaVIMIKn4z+hOwlr 5/Bp80iHrg+zej196mtZssjn9FmuijwklVmw+G+fPlqIsOMEmrC2XTWM6UPdp5kDB2e6 3gQQ== X-Gm-Message-State: AOJu0YyQQAofFueJdwkIOIocMpb5Mydr67gxGMwv2ulWr4ILCc3ViMFt tLII5CPZcilkfmjLHWJFUrVl4atfXmfocNuNn5bZKZpAjAGkZttcHpsw2UAW1zbrQY0= X-Gm-Gg: ASbGncskuRGetnrYhHWAIU+nvoe7F0eTa6V9zPUbDfsJxkmJkQBdTlDlo2/2KsBvPKo awd5wRPSf+CBitQGB+sgqQNzdi+BOKasMuZkgBvRbJOtR458ehVIe9xNk4e233QyvFzzlVqrz26 uMZdJPJcZxt/3VXXgKmxlFmT0D59TGXJwFHfDr3twzztlHfICF9BEM+hZc2skKY50iFT4yehFxj YJROYZGShhwl1xiWWICNqsvwFROzzweORz//WaqPHSxm6eSSImHDBnINsDwLewGCqMGEckTe+2c kcyo/SlnMivTxNSWBD1Zn03+QYVfLLnueY3Px82ERim+jW6v7OjT6ZoDghBeiHepEXquLP9rwdS qNPDnzVulk0znmtckZ4Vr2sQeUW1TawWt2WRoLKOjPEJJ6E8IWs0H5gHw0yiyywcd4airEE6hc8 re992b0V8k6fC/pkyoxSXMwh7AH7n+VkI+Fo4wv1wXfhgTQA== X-Google-Smtp-Source: AGHT+IG2U7Cq9XEnpVAE7K9yFqwJEI9cfDtjz7cYTUzQl+PswZAoE2B7PmlFvgkojdg3oKCQ2YSTYQ== X-Received: by 2002:a17:906:f5a4:b0:b77:2269:8de6 with SMTP id a640c23a62f3a-b7a242b1989mr674257966b.19.1765181520775; Mon, 08 Dec 2025 00:12:00 -0800 (PST) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b79f449b160sm1052718266b.23.2025.12.08.00.11.59 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 08 Dec 2025 00:11:59 -0800 (PST) Content-Type: multipart/mixed; boundary=d652bb98de4142eaa6f70a998c6352ee4cdfa5ee9c0d05bbab18fe005496 Mime-Version: 1.0 Date: Mon, 08 Dec 2025 09:11:59 +0100 Message-Id: From: "Jelte Fennema-Nio" Cc: "PostgreSQL Hackers" , "Thomas Munro" Subject: Re: Make copyObject work in C++ To: "Tom Lane" X-Mailer: aerc 0.20.1-31-gf6db7c329ce0 References: <2844370.1765136707@sss.pgh.pa.us> In-Reply-To: <2844370.1765136707@sss.pgh.pa.us> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --d652bb98de4142eaa6f70a998c6352ee4cdfa5ee9c0d05bbab18fe005496 Content-Type: multipart/alternative; boundary=872756ea499fa8287baed3bd6f28f1afdecce0a7ec4996b7628d3e27d0c5 --872756ea499fa8287baed3bd6f28f1afdecce0a7ec4996b7628d3e27d0c5 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Sun Dec 7, 2025 at 8:45 PM CET, Tom Lane wrote: > #ifdef __cplusplus > #undef typeof > #define typeof decltype > #define HAVE_TYPEOF 1 > #endif Went with defining pg_exprtype (pg_typeof already exists). Undefining typeof seemed a bit heavy-handed. Especially since I think it would be nice to backport this so C++ extensions can use copyObject directly. > BTW, grepping finds a number of random references to __typeof__ and > __typeof, which probably ought to be updated to be just typeof. Added a follow on patch that starts using pg_exrtype in all those places. --872756ea499fa8287baed3bd6f28f1afdecce0a7ec4996b7628d3e27d0c5-- --d652bb98de4142eaa6f70a998c6352ee4cdfa5ee9c0d05bbab18fe005496 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0001-Make-copyObject-work-in-C.patch Content-Type: text/x-patch; charset=utf-8; name=v2-0001-Make-copyObject-work-in-C.patch RnJvbSA1YTA3NmJlOGI5MTkwMzRjN2ZmNDY5ZTM5YTkyZDc2Yzc4NTkwYTU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBGcmksIDUgRGVjIDIwMjUgMTU6Mzc6NTkgKzAxMDAKU3ViamVjdDogW1BBVENIIHYy IDEvMl0gTWFrZSBjb3B5T2JqZWN0IHdvcmsgaW4gQysrCgpDYWxsaW5nIGNvcHlPYmplY3QgZmFp bHMgaW4gQysrIHdpdGggYW4gZXJyb3IgbGlrZSBpbiBtb3N0IHNldHVwczoKCmVycm9yOiB1c2Ug b2YgdW5kZWNsYXJlZCBpZGVudGlmaWVyICd0eXBlb2YnOyBkaWQgeW91IG1lYW4gJ3R5cGVpZCcK ClRoaXMgaXMgZHVlIHRvIHRoZSBDIGNvbXBpbGVyIHN1cHBvcnRpbmcgdXNlZCB0byBjb21waWxl IHBvc3RncmVzCnN1cHBvcnRpbmcgdHlwZW9mLCBidXQgdGhhdCBmdW5jdGlvbiBhY3R1YWxseSBu b3QgYmVpbmcgcHJlc2VudCBpbiB0aGUKQysrIGNvbXBpbGVyLiBUaGlzIGZpeGVzIHRoYXQgYnkg ZGVmaW5pbmcgcGdfZXhwcnR5cGUgd2hpY2ggbWFwcyB0bwp0eXBlb2Ygb3IgZGVjbHR5cGUgZGVw ZW5kaW5nIG9uIHRoZSBjb21waWxlci4gV2hpbGUgcGdfdHlwZW9mIHdvdWxkIGhhdmUKYmVlbiBh IG1vcmUgbmF0dXJhbCBuYW1lLCB0aGF0IG9uZSBpcyBhbHJlYWR5IHRha2VuIGluIG91ciBjb2Rl YmFzZSBhcwp0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHBnX3R5cGVvZiBVREYuCi0tLQogc3Jj L2luY2x1ZGUvYy5oICAgICAgICAgICB8IDEzICsrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL25v ZGVzL25vZGVzLmggfCAgNCArKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYy5oIGIvc3JjL2luY2x1 ZGUvYy5oCmluZGV4IGNjZDJiNjU0ZDQ1Li40NmE5N2YxMWFlNyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvYy5oCisrKyBiL3NyYy9pbmNsdWRlL2MuaApAQCAtNDA3LDYgKzQwNywxOSBAQAogI2Rl ZmluZSB1bmxpa2VseSh4KSAoKHgpICE9IDApCiAjZW5kaWYKIAorLyoKKyAqIHBnX2V4cHJ0eXBl CisgKgkJR2V0IHRoZSB0eXBlIG9mIGFuIGV4cHJlc3Npb24gYXQgY29tcGlsZSB0aW1lLgorICoK KyAqIEluIEMrKyB3ZSB1c2UgZGVjbHR5cGUgc2luY2UgdHlwZW9mIGlzIG5vdCBzdGFuZGFyZCBD KyssIHdoaWxlIGluIEMgd2UgdXNlCisgKiB0eXBlb2Ygd2hlbiBhdmFpbGFibGUuCisgKi8KKyNp ZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorI2RlZmluZSBwZ19leHBydHlwZSh4KSBkZWNsdHlwZSh4 KQorI2VsaWYgZGVmaW5lZChIQVZFX1RZUEVPRikKKyNkZWZpbmUgcGdfZXhwcnR5cGUoeCkgdHlw ZW9mKHgpCisjZW5kaWYKKwogLyoKICAqIENwcEFzU3RyaW5nCiAgKgkJQ29udmVydCB0aGUgYXJn dW1lbnQgdG8gYSBzdHJpbmcsIHVzaW5nIHRoZSBDIHByZXByb2Nlc3Nvci4KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCmlu ZGV4IGZiMzk1N2U3NWU1Li5hOGY0MjQzMTgyOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCkBAIC0yMjYsOCArMjI2 LDggQEAgZXh0ZXJuIGludDE2ICpyZWFkQXR0ck51bWJlckNvbHMoaW50IG51bUNvbHMpOwogZXh0 ZXJuIHZvaWQgKmNvcHlPYmplY3RJbXBsKGNvbnN0IHZvaWQgKmZyb20pOwogCiAvKiBjYXN0IHJl c3VsdCBiYWNrIHRvIGFyZ3VtZW50IHR5cGUsIGlmIHN1cHBvcnRlZCBieSBjb21waWxlciAqLwot I2lmZGVmIEhBVkVfVFlQRU9GCi0jZGVmaW5lIGNvcHlPYmplY3Qob2JqKSAoKHR5cGVvZihvYmop KSBjb3B5T2JqZWN0SW1wbChvYmopKQorI2lmZGVmIHBnX2V4cHJ0eXBlCisjZGVmaW5lIGNvcHlP YmplY3Qob2JqKSAoKHBnX2V4cHJ0eXBlKG9iaikpIGNvcHlPYmplY3RJbXBsKG9iaikpCiAjZWxz ZQogI2RlZmluZSBjb3B5T2JqZWN0KG9iaikgY29weU9iamVjdEltcGwob2JqKQogI2VuZGlmCgpi YXNlLWNvbW1pdDogMzEyODBkOTZhNjQ4NTBmNWE5YTkyNDA4ODg5MGFiNDNhMjkwNTIzNwotLSAK Mi41Mi4wCgo= --d652bb98de4142eaa6f70a998c6352ee4cdfa5ee9c0d05bbab18fe005496 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0002-Use-pg_exprtype-instead-of-__typeof__-or-__typeof.patch Content-Type: text/x-patch; charset=utf-8; name=v2-0002-Use-pg_exprtype-instead-of-__typeof__-or-__typeof.patch RnJvbSA2MmY5MjBlNTE5MDA0ZDY5MmIxNDY1OWM1ZDAwNTQ2YmFhNmJlODdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBNb24sIDggRGVjIDIwMjUgMDg6MTM6NTEgKzAxMDAKU3ViamVjdDogW1BBVENIIHYy IDIvMl0gVXNlIHBnX2V4cHJ0eXBlIGluc3RlYWQgb2YgX190eXBlb2ZfXyBvciBfX3R5cGVvZgoK VGhlIHByZXZpb3VzIGNvbW1pdCBpbnRyb2R1Y2VkIHBnX2V4cHJ0eXBlLiBUaGlzIHN0YXJ0cyB1 c2luZyB0aGF0IGluIGEKZmV3IG1vcmUgcGxhY2VzLgotLS0KIHNyYy9pbmNsdWRlL2MuaCAgICAg ICAgICAgIHwgIDggKysrKy0tLS0KIHNyYy9pbmNsdWRlL3V0aWxzL3JlbHB0ci5oIHwgMTYgKysr Ky0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDE2IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2MuaCBiL3NyYy9pbmNsdWRlL2MuaApp bmRleCA0NmE5N2YxMWFlNy4uMjMwZWEyZDEwYWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Mu aAorKysgYi9zcmMvaW5jbHVkZS9jLmgKQEAgLTk4NywxMCArOTg3LDEwIEBAIHBnX25vcmV0dXJu IGV4dGVybiB2b2lkIEV4Y2VwdGlvbmFsQ29uZGl0aW9uKGNvbnN0IGNoYXIgKmNvbmRpdGlvbk5h bWUsCiAgKi8KICNpZmRlZiBIQVZFX19CVUlMVElOX1RZUEVTX0NPTVBBVElCTEVfUAogI2RlZmlu ZSBBc3NlcnRWYXJpYWJsZUlzT2ZUeXBlKHZhcm5hbWUsIHR5cGVuYW1lKSBcCi0JU3RhdGljQXNz ZXJ0U3RtdChfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKF9fdHlwZW9mX18odmFybmFtZSks IHR5cGVuYW1lKSwgXAorCVN0YXRpY0Fzc2VydFN0bXQoX19idWlsdGluX3R5cGVzX2NvbXBhdGli bGVfcChwZ19leHBydHlwZSh2YXJuYW1lKSwgdHlwZW5hbWUpLCBcCiAJQ3BwQXNTdHJpbmcodmFy bmFtZSkgIiBkb2VzIG5vdCBoYXZlIHR5cGUgIiBDcHBBc1N0cmluZyh0eXBlbmFtZSkpCiAjZGVm aW5lIEFzc2VydFZhcmlhYmxlSXNPZlR5cGVNYWNybyh2YXJuYW1lLCB0eXBlbmFtZSkgXAotCShT dGF0aWNBc3NlcnRFeHByKF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AoX190eXBlb2ZfXyh2 YXJuYW1lKSwgdHlwZW5hbWUpLCBcCisJKFN0YXRpY0Fzc2VydEV4cHIoX19idWlsdGluX3R5cGVz X2NvbXBhdGlibGVfcChwZ19leHBydHlwZSh2YXJuYW1lKSwgdHlwZW5hbWUpLCBcCiAJIENwcEFz U3RyaW5nKHZhcm5hbWUpICIgZG9lcyBub3QgaGF2ZSB0eXBlICIgQ3BwQXNTdHJpbmcodHlwZW5h bWUpKSkKICNlbHNlCQkJCQkJCS8qICFIQVZFX19CVUlMVElOX1RZUEVTX0NPTVBBVElCTEVfUCAq LwogI2RlZmluZSBBc3NlcnRWYXJpYWJsZUlzT2ZUeXBlKHZhcm5hbWUsIHR5cGVuYW1lKSBcCkBA IC0xMjM4LDExICsxMjM4LDExIEBAIHR5cGVkZWYgc3RydWN0IFBHQWxpZ25lZFhMb2dCbG9jawog I2RlZmluZSB1bnZvbGF0aXplKHVuZGVybHlpbmdfdHlwZSwgZXhwcikgY29uc3RfY2FzdDx1bmRl cmx5aW5nX3R5cGU+KGV4cHIpCiAjZWxpZiBkZWZpbmVkKEhBVkVfX0JVSUxUSU5fVFlQRVNfQ09N UEFUSUJMRV9QKQogI2RlZmluZSB1bmNvbnN0aWZ5KHVuZGVybHlpbmdfdHlwZSwgZXhwcikgXAot CShTdGF0aWNBc3NlcnRFeHByKF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AoX190eXBlb2Yo ZXhwciksIGNvbnN0IHVuZGVybHlpbmdfdHlwZSksIFwKKwkoU3RhdGljQXNzZXJ0RXhwcihfX2J1 aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHBnX2V4cHJ0eXBlKGV4cHIpLCBjb25zdCB1bmRlcmx5 aW5nX3R5cGUpLCBcCiAJCQkJCSAgIndyb25nIGNhc3QiKSwgXAogCSAodW5kZXJseWluZ190eXBl KSAoZXhwcikpCiAjZGVmaW5lIHVudm9sYXRpemUodW5kZXJseWluZ190eXBlLCBleHByKSBcCi0J KFN0YXRpY0Fzc2VydEV4cHIoX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcChfX3R5cGVvZihl eHByKSwgdm9sYXRpbGUgdW5kZXJseWluZ190eXBlKSwgXAorCShTdGF0aWNBc3NlcnRFeHByKF9f YnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AocGdfZXhwcnR5cGUoZXhwciksIHZvbGF0aWxlIHVu ZGVybHlpbmdfdHlwZSksIFwKIAkJCQkJICAid3JvbmcgY2FzdCIpLCBcCiAJICh1bmRlcmx5aW5n X3R5cGUpIChleHByKSkKICNlbHNlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9yZWxw dHIuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbHB0ci5oCmluZGV4IGVhMzQwZmVlNjU3Li5kYWM2 MWIxMzExOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVscHRyLmgKKysrIGIvc3Jj L2luY2x1ZGUvdXRpbHMvcmVscHRyLmgKQEAgLTM4LDE2ICszOCwxMiBAQAogI2RlZmluZSByZWxw dHJfZGVjbGFyZSh0eXBlLCByZWxwdHJ0eXBlKSBcCiAJdHlwZWRlZiByZWxwdHIodHlwZSkgcmVs cHRydHlwZQogCi0jaWZkZWYgSEFWRV9fQlVJTFRJTl9UWVBFU19DT01QQVRJQkxFX1AKKyNpZmRl ZiBwZ19leHBydHlwZQogI2RlZmluZSByZWxwdHJfYWNjZXNzKGJhc2UsIHJwKSBcCiAJKEFzc2Vy dFZhcmlhYmxlSXNPZlR5cGVNYWNybyhiYXNlLCBjaGFyICopLCBcCi0JIChfX3R5cGVvZl9fKChy cCkucmVscHRyX3R5cGUpKSAoKHJwKS5yZWxwdHJfb2ZmID09IDAgPyBOVUxMIDogXAorCSAocGdf ZXhwcnR5cGUoKHJwKS5yZWxwdHJfdHlwZSkpICgocnApLnJlbHB0cl9vZmYgPT0gMCA/IE5VTEwg OiBcCiAJCShiYXNlKSArIChycCkucmVscHRyX29mZiAtIDEpKQogI2Vsc2UKLS8qCi0gKiBJZiB3 ZSBkb24ndCBoYXZlIF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AsIGFzc3VtZSB3ZSBtaWdo dCBub3QgaGF2ZQotICogX190eXBlb2ZfXyBlaXRoZXIuCi0gKi8KICNkZWZpbmUgcmVscHRyX2Fj Y2VzcyhiYXNlLCBycCkgXAogCShBc3NlcnRWYXJpYWJsZUlzT2ZUeXBlTWFjcm8oYmFzZSwgY2hh ciAqKSwgXAogCSAodm9pZCAqKSAoKHJwKS5yZWxwdHJfb2ZmID09IDAgPyBOVUxMIDogKGJhc2Up ICsgKHJwKS5yZWxwdHJfb2ZmIC0gMSkpCkBAIC03MiwxNiArNjgsMTIgQEAgcmVscHRyX3N0b3Jl X2V2YWwoY2hhciAqYmFzZSwgY2hhciAqdmFsKQogCX0KIH0KIAotI2lmZGVmIEhBVkVfX0JVSUxU SU5fVFlQRVNfQ09NUEFUSUJMRV9QCisjaWZkZWYgcGdfZXhwcnR5cGUKICNkZWZpbmUgcmVscHRy X3N0b3JlKGJhc2UsIHJwLCB2YWwpIFwKIAkoQXNzZXJ0VmFyaWFibGVJc09mVHlwZU1hY3JvKGJh c2UsIGNoYXIgKiksIFwKLQkgQXNzZXJ0VmFyaWFibGVJc09mVHlwZU1hY3JvKHZhbCwgX190eXBl b2ZfXygocnApLnJlbHB0cl90eXBlKSksIFwKKwkgQXNzZXJ0VmFyaWFibGVJc09mVHlwZU1hY3Jv KHZhbCwgcGdfZXhwcnR5cGUoKHJwKS5yZWxwdHJfdHlwZSkpLCBcCiAJIChycCkucmVscHRyX29m ZiA9IHJlbHB0cl9zdG9yZV9ldmFsKChiYXNlKSwgKGNoYXIgKikgKHZhbCkpKQogI2Vsc2UKLS8q Ci0gKiBJZiB3ZSBkb24ndCBoYXZlIF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AsIGFzc3Vt ZSB3ZSBtaWdodCBub3QgaGF2ZQotICogX190eXBlb2ZfXyBlaXRoZXIuCi0gKi8KICNkZWZpbmUg cmVscHRyX3N0b3JlKGJhc2UsIHJwLCB2YWwpIFwKIAkoQXNzZXJ0VmFyaWFibGVJc09mVHlwZU1h Y3JvKGJhc2UsIGNoYXIgKiksIFwKIAkgKHJwKS5yZWxwdHJfb2ZmID0gcmVscHRyX3N0b3JlX2V2 YWwoKGJhc2UpLCAoY2hhciAqKSAodmFsKSkpCi0tIAoyLjUyLjAKCg== --d652bb98de4142eaa6f70a998c6352ee4cdfa5ee9c0d05bbab18fe005496--