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 1w10BX-002P8X-0V for pgsql-hackers@arkaria.postgresql.org; Fri, 13 Mar 2026 10:56:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w10BV-003Nst-23 for pgsql-hackers@arkaria.postgresql.org; Fri, 13 Mar 2026 10:56:02 +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 1w10BV-003Nsk-0o for pgsql-hackers@lists.postgresql.org; Fri, 13 Mar 2026 10:56:01 +0000 Received: from mail-ot1-x32b.google.com ([2607:f8b0:4864:20::32b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w10BS-00000002Rr7-3p0X for pgsql-hackers@postgresql.org; Fri, 13 Mar 2026 10:56:01 +0000 Received: by mail-ot1-x32b.google.com with SMTP id 46e09a7af769-7d7422b4ff1so912635a34.3 for ; Fri, 13 Mar 2026 03:55:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773399357; cv=none; d=google.com; s=arc-20240605; b=cYUcUBnje5WOBDbYrW77S1oaVQAPQrArUY99qzrJqhiJG1YqD8aj2bGjXg+nAiu44g jBnB6r9aW4hsac4V9EUxoc1ryWnT2c23xUygJQO8HoHObLF9tovQez52IPDBApmvtBNq qqPMWYdakDepp9MUYwTyDGL5MEIdp9gpzdYrKPETZNwIFx/UqTi6+Yf5ynLr2aCZ8UBc 10Skt4w+GFB5FFqbE/XQi4rZRIH71MYQ6QdO8h++M6FCVZ65jniM2OIXGrJEUTr+JX1m 6V1EI10HldZOfJMnKD1A2baQUTmYiT5lU953YrEZYtt76RQ2/3GmbTZOcguapmY+B/sw BBOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=KJaWY2jGfr2RO9ZC5ElMYZAd6rd53drp7ImlX3ZPu2w=; fh=LjKFLtsIZCMTizLyTA4AFG87ZKmCv+GaGqy0prFtWP4=; b=T43TBEYtbYWQz3LwTFA9v4uQ5Wbbg9PHBaQjK7zdVJ9osDTqCDaWeeKnyt5xgpo36E 1oLjyvmaDlvUaH3g8ksitfPhZyn8+bK5en9Y2js6b6Ts/CVP0sN0olhx4Gw/o7wh2gn2 OnbbdwfLzvuno/48W9wZl9SAT2gUujD/s2tu+8RSN/wQeM9gTGD0XLI1SfSEKPt7opsQ stATpuMmSCZWacrGwQtHTLejnbZi8vhluA7KRdTSLaweo5DyD66F+dMMVO9iY5vbl/T0 p5Jsb8yLzqPda8H0PTWqPrWtDUhteuc4rzqOllfCVBWfzqU/AFOb1L14F/HDvYAEdPUa 1KIw==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tigerdata.com; s=google; t=1773399357; x=1774004157; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=KJaWY2jGfr2RO9ZC5ElMYZAd6rd53drp7ImlX3ZPu2w=; b=QrEPyD1wdCCADKdPEeDbHI3YJSN8/lzvIDfqRmZX/N/aXET2C7t2W5EC/3vpTgKzut YcJFJJHcaruKFSXPgPfFDB10Q29kHNXGkzj7eZrEueq6lDw7ktxk332G45pkrdzDR4ID r6yHG5IfVrLm+LtEeeEPyNUhS6VD66rpumwBEGi5QApQPe30u3fy9g2yUi2jmBrKOgSB DVQSvxHpXIz+WJrZr2pjWfUJ+Ct7kJDoUKeaPvLFSBwEBU82TOEz5RsbOCfpM3fd4Mp5 xdWsB3n231EzpaWpCvlaGmWbjOLmkfzNJlwXuVpEJqEqNUmaCx8T6mxR1BBRRF6dQY8i 4EQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773399357; x=1774004157; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=KJaWY2jGfr2RO9ZC5ElMYZAd6rd53drp7ImlX3ZPu2w=; b=nuYvxpiZHglhbjZweJtqtbNZ61POJ7wVWNH7OCrxWlUo7haWkRZlz2DGNGCumYBWm9 zVm/LmzFgWthsw6u/r2XpJzz31J864jKWelHNhad1TrYcxq6Jik0JDHwL9ZBhGCx+Whe DCEGfmQSLk3zfb/ZBXbzauXU3j/rEjpxZhxOHuYIMYE/42ORWJPj3+h2lzoBkE3WJ6Gh 5ToyKMGgfgRUDFy4sq6RFQH3tEq1WQVCISF+VFdTSDu8RaD99Nu+WNxCtUtebAJRN1q9 aEe0aLaCJ0ygRPIGbXTF/Si6NkMPjcJhY7hB25Olpj6epqU2rSXXiW4xgCn0IoFJISAj P9nQ== X-Gm-Message-State: AOJu0YxPLMk8rY1BZf37c9/VrubmF8jH+YuL1bUZf0taaAYl2FvGFZ5m rqscmJUBDh4gy/hK6dmR/Vl/qrPAq6cUZvVcoxjH37qSF4y+GR/A2BFsMqbCF3WxpMWGAQL1MFI 9xkol6jmtKiuLW2baY/GpGiqOG633NZajEOA3ul8c9xf7tt5yPkyxp72N5g== X-Gm-Gg: ATEYQzwGAqLDyU6oV7M0bCXXY0ZhCVzS4A1C8Nv969zV3msZWFHyRiNVOxO4J/g0vwU /qKjlj9/6jNwvYX58OLtW26bqYgpHEMCmI3fkJu5VKdMZZ2L5nD+1gpP/tvtJjBAeNYeR25CBeJ 4PKd7gBCZhdGPXc683tIrcB0I1U6Y8VoD46b13MtVvA7s7LcP7MJKE8zwfd0dXXksN0y8ENG/Q7 mEDvlXbHhc5vwO3IJY+2zeRBM+es2tFmYbZImubLhXZf0maDJB2MLSNUZr4OCa3HuahmPTy24Md WjLTdjVAA9jWT+vFlnFv/I917pdynfyhw65846QfY2hJIYg5v8zsfp+Aa5HWmJW1nFk= X-Received: by 2002:a05:6830:440e:b0:7d7:57af:4435 with SMTP id 46e09a7af769-7d78256e405mr1931969a34.30.1773399356682; Fri, 13 Mar 2026 03:55:56 -0700 (PDT) MIME-Version: 1.0 References: <2869012.1767023578@sss.pgh.pa.us> <7f39480a-4b7a-4a51-a9ec-d1189b44432d@eisentraut.org> In-Reply-To: <7f39480a-4b7a-4a51-a9ec-d1189b44432d@eisentraut.org> From: Aleksander Alekseev Date: Fri, 13 Mar 2026 13:55:44 +0300 X-Gm-Features: AaiRm50wODMD7zShfFhT1_Fs-Wam9BpbGpTdTnePdlXwSpYfk94-tH8EwKnRLLQ Message-ID: Subject: Re: Define DatumGetInt8 function. To: pgsql-hackers Cc: Peter Eisentraut , Kirill Reshke , David Rowley , Tom Lane Content-Type: multipart/mixed; boundary="000000000000b35eda064ce5b624" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b35eda064ce5b624 Content-Type: text/plain; charset="UTF-8" Hi Peter, Thanks for your feedback. > I'm tempted to think the correct direction here would be to use uint8 > and its associated macros and functions more rigorously, not less. OK, if my understanding is correct this leaves us char_increment() and char_decrement() which currently use DatumGetUInt8 inconsistently with CharGetDatum for the argument and return value correspondingly. > I don't think it's worth making an isolated fix here for the one use of > UInt8GetDatum() I think you meant not this particular change so I included it to the patch. We can keep nbtcompare.c as if you believe this change is not that important (it arguably isn't). > The change in pageinspect looks correct, but then when you look > nearby and further around, you will find that there are also a bunch of > (if not most) UInt16GetDatum and UInt32GetDatum that are wrong > [...] Agree. I did my best to fix all the inconsistencies in pageinsect. > There are a lot of opportunities to clean this up, and I suspect that > while many of these will work either way in practice because the actual > values don't go far enough to hit the signed/unsigned boundary, I think > there could a number of little bugs here to be fixed. I believe you were referring to places other than pageinspect. I will investigate and create separate threads with corresponding patches later. -- Best regards, Aleksander Alekseev --000000000000b35eda064ce5b624 Content-Type: text/x-patch; charset="US-ASCII"; name="v3-0001-Fix-several-Datum-conversion-inconsistencies.patch" Content-Disposition: attachment; filename="v3-0001-Fix-several-Datum-conversion-inconsistencies.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmos6dgy0 RnJvbSAyYjE3MGZlNmRkNmY0NmIxNjgwMjgwNDAxOWRjM2MzYWFjMGMyMTUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVrc2FuZGVyIEFsZWtzZWV2IDxhbGVrc2FuZGVyQHRpZ2Vy ZGF0YS5jb20+CkRhdGU6IEZyaSwgMTMgTWFyIDIwMjYgMTI6NTE6NTYgKzAzMDAKU3ViamVjdDog W1BBVENIIHYzXSBGaXggc2V2ZXJhbCBEYXR1bSBjb252ZXJzaW9uIGluY29uc2lzdGVuY2llcwoK SW4gbmJ0Y29tcGFyZS5jIG1ha2UgY2hhcl9kZWNyZW1lbnQoKSBhbmQgY2hhcl9pbmNyZW1lbnQo KSB1c2UgVUludDhHZXREYXR1bSgpCmNvbnNpc3RlbnRseSB3aXRoIERhdHVtR2V0VUludDgoKSBm b3IgcmV0dXJuIHZhbHVlcy4KCkluIHBhZ2VpbnNwZWN0LyB1c2UgRGF0dW0gY29udmVyc2lvbiBm dW5jdGlvbnMgbWF0Y2hpbmcgdGhlIFNRTCB0eXBlcyAtCkludDE2R2V0RGF0dW0gZm9yIHNtYWxs aW50IGNvbHVtbnMsIEludDMyR2V0RGF0dW0gZm9yIGludGVnZXIgY29sdW1ucywgZXRjLgoKQXV0 aG9yOiBBbGVrc2FuZGVyIEFsZWtzZWV2IDxhbGVrc2FuZGVyQHRpZ2VyZGF0YS5jb20+ClN1Z2dl c3RlZC1ieTogUGV0ZXIgRWlzZW50cmF1dCA8cGV0ZXJAZWlzZW50cmF1dC5vcmc+ClJldmlld2Vk LWJ5OiBUT0RPIEZJWE1FCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FMZFNTUGhG eWI5cUxTSGVlNzNYdFptMUNCV0pObzklMkJKekZOZi16VUVXQ1JXNXlFaVElNDBtYWlsLmdtYWls LmNvbQotLS0KIGNvbnRyaWIvcGFnZWluc3BlY3QvYnJpbmZ1bmNzLmMgICAgICAgIHwgIDggKysr Ky0tLS0KIGNvbnRyaWIvcGFnZWluc3BlY3QvYnRyZWVmdW5jcy5jICAgICAgIHwgIDQgKystLQog Y29udHJpYi9wYWdlaW5zcGVjdC9naW5mdW5jcy5jICAgICAgICAgfCAgNCArKy0tCiBjb250cmli L3BhZ2VpbnNwZWN0L2dpc3RmdW5jcy5jICAgICAgICB8ICA4ICsrKystLS0tCiBjb250cmliL3Bh Z2VpbnNwZWN0L2hlYXBmdW5jcy5jICAgICAgICB8IDIwICsrKysrKysrKystLS0tLS0tLS0tCiBj b250cmliL3BhZ2VpbnNwZWN0L3Jhd3BhZ2UuYyAgICAgICAgICB8IDE0ICsrKysrKystLS0tLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGNvbXBhcmUuYyB8ICA0ICsrLS0KIDcgZmls ZXMgY2hhbmdlZCwgMzEgaW5zZXJ0aW9ucygrKSwgMzEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvY29udHJpYi9wYWdlaW5zcGVjdC9icmluZnVuY3MuYyBiL2NvbnRyaWIvcGFnZWluc3BlY3Qv YnJpbmZ1bmNzLmMKaW5kZXggMjZjZjc4MjUyZWQuLmVjNjRkM2U0MDk5IDEwMDY0NAotLS0gYS9j b250cmliL3BhZ2VpbnNwZWN0L2JyaW5mdW5jcy5jCisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3Qv YnJpbmZ1bmNzLmMKQEAgLTI0NSw3ICsyNDUsNyBAQCBicmluX3BhZ2VfaXRlbXMoUEdfRlVOQ1RJ T05fQVJHUykKIAogCQlpZiAodW51c2VkSXRlbSkKIAkJewotCQkJdmFsdWVzWzBdID0gVUludDE2 R2V0RGF0dW0ob2Zmc2V0KTsKKwkJCXZhbHVlc1swXSA9IEludDMyR2V0RGF0dW0ob2Zmc2V0KTsK IAkJCW51bGxzWzFdID0gdHJ1ZTsKIAkJCW51bGxzWzJdID0gdHJ1ZTsKIAkJCW51bGxzWzNdID0g dHJ1ZTsKQEAgLTI1OCw3ICsyNTgsNyBAQCBicmluX3BhZ2VfaXRlbXMoUEdfRlVOQ1RJT05fQVJH UykKIAkJewogCQkJaW50CQkJYXR0ID0gYXR0bm8gLSAxOwogCi0JCQl2YWx1ZXNbMF0gPSBVSW50 MTZHZXREYXR1bShvZmZzZXQpOworCQkJdmFsdWVzWzBdID0gSW50MzJHZXREYXR1bShvZmZzZXQp OwogCQkJc3dpdGNoIChUdXBsZURlc2NBdHRyKHJzaW5mby0+c2V0RGVzYywgMSktPmF0dHR5cGlk KQogCQkJewogCQkJCWNhc2UgSU5UOE9JRDoKQEAgLTI2NiwxMiArMjY2LDEyIEBAIGJyaW5fcGFn ZV9pdGVtcyhQR19GVU5DVElPTl9BUkdTKQogCQkJCQlicmVhazsKIAkJCQljYXNlIElOVDRPSUQ6 CiAJCQkJCS8qIHN1cHBvcnQgZm9yIG9sZCBleHRlbnNpb24gdmVyc2lvbiAqLwotCQkJCQl2YWx1 ZXNbMV0gPSBVSW50MzJHZXREYXR1bShkdHVwLT5idF9ibGtubyk7CisJCQkJCXZhbHVlc1sxXSA9 IEludDMyR2V0RGF0dW0oZHR1cC0+YnRfYmxrbm8pOwogCQkJCQlicmVhazsKIAkJCQlkZWZhdWx0 OgogCQkJCQllbG9nKEVSUk9SLCAiaW5jb3JyZWN0IG91dHB1dCB0eXBlcyIpOwogCQkJfQotCQkJ dmFsdWVzWzJdID0gVUludDE2R2V0RGF0dW0oYXR0bm8pOworCQkJdmFsdWVzWzJdID0gSW50MzJH ZXREYXR1bShhdHRubyk7CiAJCQl2YWx1ZXNbM10gPSBCb29sR2V0RGF0dW0oZHR1cC0+YnRfY29s dW1uc1thdHRdLmJ2X2FsbG51bGxzKTsKIAkJCXZhbHVlc1s0XSA9IEJvb2xHZXREYXR1bShkdHVw LT5idF9jb2x1bW5zW2F0dF0uYnZfaGFzbnVsbHMpOwogCQkJdmFsdWVzWzVdID0gQm9vbEdldERh dHVtKGR0dXAtPmJ0X3BsYWNlaG9sZGVyKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGFnZWluc3Bl Y3QvYnRyZWVmdW5jcy5jIGIvY29udHJpYi9wYWdlaW5zcGVjdC9idHJlZWZ1bmNzLmMKaW5kZXgg MDU4NWI3Y2VlNDAuLjMzODFlN2NjMmE3IDEwMDY0NAotLS0gYS9jb250cmliL3BhZ2VpbnNwZWN0 L2J0cmVlZnVuY3MuYworKysgYi9jb250cmliL3BhZ2VpbnNwZWN0L2J0cmVlZnVuY3MuYwpAQCAt NTA3LDkgKzUwNyw5IEBAIGJ0X3BhZ2VfcHJpbnRfdHVwbGVzKHVhX3BhZ2VfaXRlbXMgKnVhcmdz KQogCiAJaiA9IDA7CiAJbWVtc2V0KG51bGxzLCAwLCBzaXplb2YobnVsbHMpKTsKLQl2YWx1ZXNb aisrXSA9IFVJbnQxNkdldERhdHVtKG9mZnNldCk7CisJdmFsdWVzW2orK10gPSBJbnQxNkdldERh dHVtKG9mZnNldCk7CiAJdmFsdWVzW2orK10gPSBJdGVtUG9pbnRlckdldERhdHVtKCZpdHVwLT50 X3RpZCk7Ci0JdmFsdWVzW2orK10gPSBJbnQzMkdldERhdHVtKChpbnQpIEluZGV4VHVwbGVTaXpl KGl0dXApKTsKKwl2YWx1ZXNbaisrXSA9IEludDE2R2V0RGF0dW0oSW5kZXhUdXBsZVNpemUoaXR1 cCkpOwogCXZhbHVlc1tqKytdID0gQm9vbEdldERhdHVtKEluZGV4VHVwbGVIYXNOdWxscyhpdHVw KSk7CiAJdmFsdWVzW2orK10gPSBCb29sR2V0RGF0dW0oSW5kZXhUdXBsZUhhc1ZhcndpZHRocyhp dHVwKSk7CiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGFnZWluc3BlY3QvZ2luZnVuY3MuYyBiL2Nv bnRyaWIvcGFnZWluc3BlY3QvZ2luZnVuY3MuYwppbmRleCBiNjU3NDA4M2IwYS4uZTQ0NjFkYjdm MGEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGFnZWluc3BlY3QvZ2luZnVuY3MuYworKysgYi9jb250 cmliL3BhZ2VpbnNwZWN0L2dpbmZ1bmNzLmMKQEAgLTczLDcgKzczLDcgQEAgZ2luX21ldGFwYWdl X2luZm8oUEdfRlVOQ1RJT05fQVJHUykKIAogCXZhbHVlc1swXSA9IEludDY0R2V0RGF0dW0obWV0 YWRhdGEtPmhlYWQpOwogCXZhbHVlc1sxXSA9IEludDY0R2V0RGF0dW0obWV0YWRhdGEtPnRhaWwp OwotCXZhbHVlc1syXSA9IFVJbnQzMkdldERhdHVtKG1ldGFkYXRhLT50YWlsRnJlZVNpemUpOwor CXZhbHVlc1syXSA9IEludDMyR2V0RGF0dW0obWV0YWRhdGEtPnRhaWxGcmVlU2l6ZSk7CiAJdmFs dWVzWzNdID0gSW50NjRHZXREYXR1bShtZXRhZGF0YS0+blBlbmRpbmdQYWdlcyk7CiAJdmFsdWVz WzRdID0gSW50NjRHZXREYXR1bShtZXRhZGF0YS0+blBlbmRpbmdIZWFwVHVwbGVzKTsKIApAQCAt MjU4LDcgKzI1OCw3IEBAIGdpbl9sZWFmcGFnZV9pdGVtcyhQR19GVU5DVElPTl9BUkdTKQogCQlt ZW1zZXQobnVsbHMsIDAsIHNpemVvZihudWxscykpOwogCiAJCXZhbHVlc1swXSA9IEl0ZW1Qb2lu dGVyR2V0RGF0dW0oJmN1ci0+Zmlyc3QpOwotCQl2YWx1ZXNbMV0gPSBVSW50MTZHZXREYXR1bShj dXItPm5ieXRlcyk7CisJCXZhbHVlc1sxXSA9IEludDE2R2V0RGF0dW0oY3VyLT5uYnl0ZXMpOwog CiAJCS8qIGJ1aWxkIGFuIGFycmF5IG9mIGRlY29kZWQgaXRlbSBwb2ludGVycyAqLwogCQl0aWRz ID0gZ2luUG9zdGluZ0xpc3REZWNvZGUoY3VyLCAmbmRlY29kZWQpOwpkaWZmIC0tZ2l0IGEvY29u dHJpYi9wYWdlaW5zcGVjdC9naXN0ZnVuY3MuYyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvZ2lzdGZ1 bmNzLmMKaW5kZXggYTIwNWNiOGEzMzQuLmNiNDkxNDEyZDAwIDEwMDY0NAotLS0gYS9jb250cmli L3BhZ2VpbnNwZWN0L2dpc3RmdW5jcy5jCisrKyBiL2NvbnRyaWIvcGFnZWluc3BlY3QvZ2lzdGZ1 bmNzLmMKQEAgLTE3Niw5ICsxNzYsOSBAQCBnaXN0X3BhZ2VfaXRlbXNfYnl0ZWEoUEdfRlVOQ1RJ T05fQVJHUykKIAogCQltZW1zZXQobnVsbHMsIDAsIHNpemVvZihudWxscykpOwogCi0JCXZhbHVl c1swXSA9IFVJbnQxNkdldERhdHVtKG9mZnNldCk7CisJCXZhbHVlc1swXSA9IEludDE2R2V0RGF0 dW0ob2Zmc2V0KTsKIAkJdmFsdWVzWzFdID0gSXRlbVBvaW50ZXJHZXREYXR1bSgmaXR1cC0+dF90 aWQpOwotCQl2YWx1ZXNbMl0gPSBJbnQzMkdldERhdHVtKChpbnQpIEluZGV4VHVwbGVTaXplKGl0 dXApKTsKKwkJdmFsdWVzWzJdID0gSW50MTZHZXREYXR1bShJbmRleFR1cGxlU2l6ZShpdHVwKSk7 CiAKIAkJdHVwbGVfYnl0ZWEgPSAoYnl0ZWEgKikgcGFsbG9jKHR1cGxlX2xlbiArIFZBUkhEUlNa KTsKIAkJU0VUX1ZBUlNJWkUodHVwbGVfYnl0ZWEsIHR1cGxlX2xlbiArIFZBUkhEUlNaKTsKQEAg LTI4Myw5ICsyODMsOSBAQCBnaXN0X3BhZ2VfaXRlbXMoUEdfRlVOQ1RJT05fQVJHUykKIAogCQlt ZW1zZXQobnVsbHMsIDAsIHNpemVvZihudWxscykpOwogCi0JCXZhbHVlc1swXSA9IFVJbnQxNkdl dERhdHVtKG9mZnNldCk7CisJCXZhbHVlc1swXSA9IEludDE2R2V0RGF0dW0ob2Zmc2V0KTsKIAkJ dmFsdWVzWzFdID0gSXRlbVBvaW50ZXJHZXREYXR1bSgmaXR1cC0+dF90aWQpOwotCQl2YWx1ZXNb Ml0gPSBJbnQzMkdldERhdHVtKChpbnQpIEluZGV4VHVwbGVTaXplKGl0dXApKTsKKwkJdmFsdWVz WzJdID0gSW50MTZHZXREYXR1bShJbmRleFR1cGxlU2l6ZShpdHVwKSk7CiAJCXZhbHVlc1szXSA9 IEJvb2xHZXREYXR1bShJdGVtSWRJc0RlYWQoaWQpKTsKIAogCQlpZiAoaW5kZXhfY29sdW1ucykK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGFnZWluc3BlY3QvaGVhcGZ1bmNzLmMgYi9jb250cmliL3Bh Z2VpbnNwZWN0L2hlYXBmdW5jcy5jCmluZGV4IDNhNjE5NTRlMWQ5Li4xZmJhNjQ0YWVlOCAxMDA2 NDQKLS0tIGEvY29udHJpYi9wYWdlaW5zcGVjdC9oZWFwZnVuY3MuYworKysgYi9jb250cmliL3Bh Z2VpbnNwZWN0L2hlYXBmdW5jcy5jCkBAIC0xODksMTAgKzE4OSwxMCBAQCBoZWFwX3BhZ2VfaXRl bXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJbHBfZmxhZ3MgPSBJdGVtSWRHZXRGbGFncyhpZCk7CiAJ CWxwX2xlbiA9IEl0ZW1JZEdldExlbmd0aChpZCk7CiAKLQkJdmFsdWVzWzBdID0gVUludDE2R2V0 RGF0dW0oaW50ZXJfY2FsbF9kYXRhLT5vZmZzZXQpOwotCQl2YWx1ZXNbMV0gPSBVSW50MTZHZXRE YXR1bShscF9vZmZzZXQpOwotCQl2YWx1ZXNbMl0gPSBVSW50MTZHZXREYXR1bShscF9mbGFncyk7 Ci0JCXZhbHVlc1szXSA9IFVJbnQxNkdldERhdHVtKGxwX2xlbik7CisJCXZhbHVlc1swXSA9IElu dDE2R2V0RGF0dW0oaW50ZXJfY2FsbF9kYXRhLT5vZmZzZXQpOworCQl2YWx1ZXNbMV0gPSBJbnQx NkdldERhdHVtKGxwX29mZnNldCk7CisJCXZhbHVlc1syXSA9IEludDE2R2V0RGF0dW0obHBfZmxh Z3MpOworCQl2YWx1ZXNbM10gPSBJbnQxNkdldERhdHVtKGxwX2xlbik7CiAKIAkJLyoKIAkJICog V2UgZG8ganVzdCBlbm91Z2ggdmFsaWRpdHkgY2hlY2tpbmcgdG8gbWFrZSBzdXJlIHdlIGRvbid0 IHJlZmVyZW5jZQpAQCAtMjA5LDE0ICsyMDksMTQgQEAgaGVhcF9wYWdlX2l0ZW1zKFBHX0ZVTkNU SU9OX0FSR1MpCiAJCQkvKiBFeHRyYWN0IGluZm9ybWF0aW9uIGZyb20gdGhlIHR1cGxlIGhlYWRl ciAqLwogCQkJdHVwaGRyID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgaWQp OwogCi0JCQl2YWx1ZXNbNF0gPSBVSW50MzJHZXREYXR1bShIZWFwVHVwbGVIZWFkZXJHZXRSYXdY bWluKHR1cGhkcikpOwotCQkJdmFsdWVzWzVdID0gVUludDMyR2V0RGF0dW0oSGVhcFR1cGxlSGVh ZGVyR2V0UmF3WG1heCh0dXBoZHIpKTsKKwkJCXZhbHVlc1s0XSA9IFRyYW5zYWN0aW9uSWRHZXRE YXR1bShIZWFwVHVwbGVIZWFkZXJHZXRSYXdYbWluKHR1cGhkcikpOworCQkJdmFsdWVzWzVdID0g VHJhbnNhY3Rpb25JZEdldERhdHVtKEhlYXBUdXBsZUhlYWRlckdldFJhd1htYXgodHVwaGRyKSk7 CiAJCQkvKiBzaGFyZWQgd2l0aCB4dmFjICovCi0JCQl2YWx1ZXNbNl0gPSBVSW50MzJHZXREYXR1 bShIZWFwVHVwbGVIZWFkZXJHZXRSYXdDb21tYW5kSWQodHVwaGRyKSk7CisJCQl2YWx1ZXNbNl0g PSBJbnQzMkdldERhdHVtKEhlYXBUdXBsZUhlYWRlckdldFJhd0NvbW1hbmRJZCh0dXBoZHIpKTsK IAkJCXZhbHVlc1s3XSA9IFBvaW50ZXJHZXREYXR1bSgmdHVwaGRyLT50X2N0aWQpOwotCQkJdmFs dWVzWzhdID0gVUludDMyR2V0RGF0dW0odHVwaGRyLT50X2luZm9tYXNrMik7Ci0JCQl2YWx1ZXNb OV0gPSBVSW50MzJHZXREYXR1bSh0dXBoZHItPnRfaW5mb21hc2spOwotCQkJdmFsdWVzWzEwXSA9 IFVJbnQ4R2V0RGF0dW0odHVwaGRyLT50X2hvZmYpOworCQkJdmFsdWVzWzhdID0gSW50MzJHZXRE YXR1bSh0dXBoZHItPnRfaW5mb21hc2syKTsKKwkJCXZhbHVlc1s5XSA9IEludDMyR2V0RGF0dW0o dHVwaGRyLT50X2luZm9tYXNrKTsKKwkJCXZhbHVlc1sxMF0gPSBJbnQxNkdldERhdHVtKHR1cGhk ci0+dF9ob2ZmKTsKIAogCQkJLyoKIAkJCSAqIFdlIGFscmVhZHkgY2hlY2tlZCB0aGF0IHRoZSBp dGVtIGlzIGNvbXBsZXRlbHkgd2l0aGluIHRoZSByYXcKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGFn ZWluc3BlY3QvcmF3cGFnZS5jIGIvY29udHJpYi9wYWdlaW5zcGVjdC9yYXdwYWdlLmMKaW5kZXgg ODZmZTI0NWNhYzUuLjNmMjVhNmQ5YWUxIDEwMDY0NAotLS0gYS9jb250cmliL3BhZ2VpbnNwZWN0 L3Jhd3BhZ2UuYworKysgYi9jb250cmliL3BhZ2VpbnNwZWN0L3Jhd3BhZ2UuYwpAQCAtMjg1LDgg KzI4NSw4IEBAIHBhZ2VfaGVhZGVyKFBHX0ZVTkNUSU9OX0FSR1MpCiAJfQogCWVsc2UKIAkJdmFs dWVzWzBdID0gTFNOR2V0RGF0dW0obHNuKTsKLQl2YWx1ZXNbMV0gPSBVSW50MTZHZXREYXR1bShw YWdlaGVhZGVyLT5wZF9jaGVja3N1bSk7Ci0JdmFsdWVzWzJdID0gVUludDE2R2V0RGF0dW0ocGFn ZWhlYWRlci0+cGRfZmxhZ3MpOworCXZhbHVlc1sxXSA9IEludDE2R2V0RGF0dW0ocGFnZWhlYWRl ci0+cGRfY2hlY2tzdW0pOworCXZhbHVlc1syXSA9IEludDE2R2V0RGF0dW0ocGFnZWhlYWRlci0+ cGRfZmxhZ3MpOwogCiAJLyogcGFnZWluc3BlY3QgPj0gMS4xMCB1c2VzIGludDQgaW5zdGVhZCBv ZiBpbnQyIGZvciB0aG9zZSBmaWVsZHMgKi8KIAlzd2l0Y2ggKFR1cGxlRGVzY0F0dHIodHVwZGVz YywgMyktPmF0dHR5cGlkKQpAQCAtMjk1LDEwICsyOTUsMTAgQEAgcGFnZV9oZWFkZXIoUEdfRlVO Q1RJT05fQVJHUykKIAkJCUFzc2VydChUdXBsZURlc2NBdHRyKHR1cGRlc2MsIDQpLT5hdHR0eXBp ZCA9PSBJTlQyT0lEICYmCiAJCQkJICAgVHVwbGVEZXNjQXR0cih0dXBkZXNjLCA1KS0+YXR0dHlw aWQgPT0gSU5UMk9JRCAmJgogCQkJCSAgIFR1cGxlRGVzY0F0dHIodHVwZGVzYywgNiktPmF0dHR5 cGlkID09IElOVDJPSUQpOwotCQkJdmFsdWVzWzNdID0gVUludDE2R2V0RGF0dW0ocGFnZWhlYWRl ci0+cGRfbG93ZXIpOwotCQkJdmFsdWVzWzRdID0gVUludDE2R2V0RGF0dW0ocGFnZWhlYWRlci0+ cGRfdXBwZXIpOwotCQkJdmFsdWVzWzVdID0gVUludDE2R2V0RGF0dW0ocGFnZWhlYWRlci0+cGRf c3BlY2lhbCk7Ci0JCQl2YWx1ZXNbNl0gPSBVSW50MTZHZXREYXR1bShQYWdlR2V0UGFnZVNpemUo cGFnZSkpOworCQkJdmFsdWVzWzNdID0gSW50MTZHZXREYXR1bShwYWdlaGVhZGVyLT5wZF9sb3dl cik7CisJCQl2YWx1ZXNbNF0gPSBJbnQxNkdldERhdHVtKHBhZ2VoZWFkZXItPnBkX3VwcGVyKTsK KwkJCXZhbHVlc1s1XSA9IEludDE2R2V0RGF0dW0ocGFnZWhlYWRlci0+cGRfc3BlY2lhbCk7CisJ CQl2YWx1ZXNbNl0gPSBJbnQxNkdldERhdHVtKFBhZ2VHZXRQYWdlU2l6ZShwYWdlKSk7CiAJCQli cmVhazsKIAkJY2FzZSBJTlQ0T0lEOgogCQkJQXNzZXJ0KFR1cGxlRGVzY0F0dHIodHVwZGVzYywg NCktPmF0dHR5cGlkID09IElOVDRPSUQgJiYKQEAgLTMxNCw3ICszMTQsNyBAQCBwYWdlX2hlYWRl cihQR19GVU5DVElPTl9BUkdTKQogCQkJYnJlYWs7CiAJfQogCi0JdmFsdWVzWzddID0gVUludDE2 R2V0RGF0dW0oUGFnZUdldFBhZ2VMYXlvdXRWZXJzaW9uKHBhZ2UpKTsKKwl2YWx1ZXNbN10gPSBJ bnQxNkdldERhdHVtKFBhZ2VHZXRQYWdlTGF5b3V0VmVyc2lvbihwYWdlKSk7CiAJdmFsdWVzWzhd ID0gVHJhbnNhY3Rpb25JZEdldERhdHVtKHBhZ2VoZWFkZXItPnBkX3BydW5lX3hpZCk7CiAKIAkv KiBCdWlsZCBhbmQgcmV0dXJuIHRoZSB0dXBsZS4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0Y29tcGFyZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRjb21wYXJlLmMKaW5kZXggMWQzNDMzNzdlOTguLjBjMTk4MjU5ZTFmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGNvbXBhcmUuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idGNvbXBhcmUuYwpAQCAtNjMxLDcgKzYzMSw3IEBAIGNoYXJfZGVjcmVt ZW50KFJlbGF0aW9uIHJlbCwgRGF0dW0gZXhpc3RpbmcsIGJvb2wgKnVuZGVyZmxvdykKIAl9CiAK IAkqdW5kZXJmbG93ID0gZmFsc2U7Ci0JcmV0dXJuIENoYXJHZXREYXR1bSgodWludDgpIGNleGlz dGluZyAtIDEpOworCXJldHVybiBVSW50OEdldERhdHVtKGNleGlzdGluZyAtIDEpOwogfQogCiBz dGF0aWMgRGF0dW0KQEAgLTY0Nyw3ICs2NDcsNyBAQCBjaGFyX2luY3JlbWVudChSZWxhdGlvbiBy ZWwsIERhdHVtIGV4aXN0aW5nLCBib29sICpvdmVyZmxvdykKIAl9CiAKIAkqb3ZlcmZsb3cgPSBm YWxzZTsKLQlyZXR1cm4gQ2hhckdldERhdHVtKCh1aW50OCkgY2V4aXN0aW5nICsgMSk7CisJcmV0 dXJuIFVJbnQ4R2V0RGF0dW0oY2V4aXN0aW5nICsgMSk7CiB9CiAKIERhdHVtCi0tIAoyLjQzLjAK Cg== --000000000000b35eda064ce5b624--