Re: [PATCH] c++, v3: implement C++29 P2287R6 - Designated-initializers for Base Classes [PR125989]

Jason Merrill <[email protected]> Tue, 4 Aug 2026 21:46:21 -0400
Newsgroups gmane.comp.gcc.patches
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------EDh29PkNeJU00a2vQ3OP1itC
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 7/27/26 4:39 PM, Jakub Jelinek wrote:
> On Mon, Jul 27, 2026 at 09:26:55AM +0200, Jakub Jelinek wrote:
>> On Mon, Jul 27, 2026 at 09:01:32AM +0200, Jakub Jelinek wrote:
>>> Added to testsuite (also the other testcases from the thread).
>>> I think if we really wanted this lookup caching, either we'd need to create
>>> a vector, store the cached lookup results in there and pass it around
>>> to recursive calls, or we could create a vector, store there the original
>>> values, change the *->index to the lookup results and ensure (through RAII,
>>> we have way too many returns) to revert this back afterwards.
>>
>> Actually, for the RAII cleanup, we could just remember the start (i.e.
>> d->cur from some point) and count how many need to be restored, the
>> old ones should be always IDENTIFIER_NODE and new ones FIELD_DECLs from
>> their lookup, so the cleanup could be just store there DECL_NAME of
>> the FIELD_DECLs.
> 
> Here is an updated version which does it that way.

Nice.

But it seems to me that once we cache the lookups this way, we don't 
need to determine the set of designators that belong to the current 
base; we should be able to look them all up and let the normal handling 
work from there.

I felt awkward about continuing to ask you for changes, so I poked at it 
some myself.  The first patch changes reshape_init_class to avoid 
changing d->end, and I think makes sense to combine with your patch.

It would also be good to check -Wmissing-braces in at least one of the 
new testcases.

The second patch changes _class to go through reshape_init_r for this 
case instead of directly recursing into reshape_init_class, which avoids 
the duplication of -Wmissing-braces handling.  This required more 
adjustment of reshape_init_r than I expected, so I'm inclined to make it 
a followup, but I think it's a useful clarification.

Thoughts?

Jason

--------------EDh29PkNeJU00a2vQ3OP1itC
Content-Type: text/x-patch; charset=UTF-8; name="simplify.patch"
Content-Disposition: attachment; filename="simplify.patch"
Content-Transfer-Encoding: base64

Y29tbWl0IGE4YWYwOWMyZDBmYjZhYmJhOGU5OWM0YzFjN2E3ZDg0MDJlNDk5ZmMKQXV0aG9yOiBK
YXNvbiBNZXJyaWxsIDxqYXNvbkByZWRoYXQuY29tPgpEYXRlOiAgIFR1ZSBBdWcgNCAwNToxNTow
MSAyMDI2IC0wNDAwCgogICAgYXZvaWQgY2hhbmdpbmcgZC0+ZW5kCgpkaWZmIC0tZ2l0IGEvZ2Nj
L2NwL2RlY2wuY2MgYi9nY2MvY3AvZGVjbC5jYwppbmRleCA2Mjk1MWRkYTNiMC4uYjVkOWVkMDU4
NzQgMTAwNjQ0Ci0tLSBhL2djYy9jcC9kZWNsLmNjCisrKyBiL2djYy9jcC9kZWNsLmNjCkBAIC03
ODU0LDkgKzc4NTQsOSBAQCByZXNoYXBlX2luaXRfY2xhc3MgKHRyZWUgdHlwZSwgcmVzaGFwZV9p
dGVyICpkLCBib29sIGZpcnN0X2luaXRpYWxpemVyX3AsCiAgICAgewogICAgICAgdHJlZSBmaWVs
ZF9pbml0OwogICAgICAgY29uc3RydWN0b3JfZWx0ICpvbGRfY3VyID0gZC0+Y3VyOwotICAgICAg
Y29uc3RydWN0b3JfZWx0ICpvbGRfZW5kID0gZC0+ZW5kLCAqbmV3X2VuZCA9IE5VTEw7CiAgICAg
ICB1bnNpZ25lZCBvbGRfcmF3X2lkeCA9IGQtPnJhd19pZHg7CiAgICAgICBib29sIGRpcmVjdF9k
ZXNpZyA9IGZhbHNlOworICAgICAgYm9vbCBzdWJjbGFzcyA9IGZhbHNlOwogCiAgICAgICAvKiBI
YW5kbGUgQysrMjAgZGVzaWduYXRlZCBpbml0aWFsaXplcnMuICAqLwogICAgICAgaWYgKGQtPmN1
ci0+aW5kZXgpCkBAIC03OTQ2LDExICs3OTQ2LDE4IEBAIHJlc2hhcGVfaW5pdF9jbGFzcyAodHJl
ZSB0eXBlLCByZXNoYXBlX2l0ZXIgKmQsIGJvb2wgZmlyc3RfaW5pdGlhbGl6ZXJfcCwKIAkJICBp
Y3R4ID0gY2N0eDsKIAkJfQogCisJICAgICAgLyogSW4gQysrMjkgYSBkZXNpZ25hdG9yIGNhbiBu
YW1lIGEgbWVtYmVyIG9mIGEgYmFzZTsgaW4gdGhhdAorCQkgY2FzZSwgZ28gdGhyb3VnaCB0aGUg
ZGVzaWduYXRvcnMgYW5kIHJlcGxhY2UgaWRzIHdpdGggX0RFQ0xzCisJCSB0byByZWNvcmQgdGhl
IGxvb2t1cCBmb3IgdGhlIG1vc3QtZGVyaXZlZCBjbGFzcy4gICovCiAJICAgICAgaWYgKGN4eF9k
aWFsZWN0ID49IGN4eDI5KQogCQl7CiAJCSAgdHJlZSBpYmluZm8gPSBsb29rdXBfYmFzZSAodHlw
ZSwgaWN0eCwgYmFfdW5pcXVlLCBOVUxMLAogCQkJCQkgICAgIGNvbXBsYWluKTsKLQkJICBpZiAo
aWJpbmZvICYmIGliaW5mbyAhPSBlcnJvcl9tYXJrX25vZGUpCisJCSAgaWYgKCFpYmluZm8pCisJ
CSAgICAvKiBUaGUgZGVzaWduYXRvciBuYW1lcyBhIGZpZWxkIG91dHNpZGUgdGhpcyBiYXNlIGNs
YXNzLAorCQkgICAgICAgc28gd2UncmUgZG9uZS4gICovCisJCSAgICBicmVhazsKKwkJICBlbHNl
IGlmIChpYmluZm8gIT0gZXJyb3JfbWFya19ub2RlKQogCQkgICAgewogCQkgICAgICB3aGlsZSAo
QklORk9fSU5IRVJJVEFOQ0VfQ0hBSU4gKGliaW5mbykgIT0gYmluZm8pCiAJCQlpYmluZm8gPSBC
SU5GT19JTkhFUklUQU5DRV9DSEFJTiAoaWJpbmZvKTsKQEAgLTc5NTgsMjggKzc5NjUsMjIgQEAg
cmVzaGFwZV9pbml0X2NsYXNzICh0cmVlIHR5cGUsIHJlc2hhcGVfaXRlciAqZCwgYm9vbCBmaXJz
dF9pbml0aWFsaXplcl9wLAogCiAJCSAgICAgIGRlc2lnX3VuZG8udW5kbyAoKTsKIAotCQkgICAg
ICAvKiBGaW5kIG91dCB3aGljaCBmb2xsb3dpbmcgZWxlbWVudHMgYWxzbyBjb3JyZXNwb25kCi0J
CQkgdG8gdGhlIHNhbWUgaWJpbmZvLCBhbmQgdGVtcG9yYXJpbHkgY2hhbmdlIGQtPmVuZAotCQkJ
IHRvIHRoZSBmaXJzdCBlbGVtZW50IGFmdGVyIHRoYXQuICAqLwotCQkgICAgICBuZXdfZW5kID0g
ZC0+Y3VyICsgMTsKIAkJICAgICAgaWYgKGQtPmN1ci0+aW5kZXggIT0gZmllbGQpCiAJCQl7CiAJ
CQkgIGQtPmN1ci0+aW5kZXggPSBmaWVsZDsKIAkJCSAgZGVzaWdfdW5kby5zdGFydCA9IGQtPmN1
cjsKIAkJCX0KLQkJICAgICAgd2hpbGUgKG5ld19lbmQgIT0gZC0+ZW5kKQorCQkgICAgICBjb25z
dHJ1Y3Rvcl9lbHQgKmUgPSBkLT5jdXIgKyAxOworCQkgICAgICBmb3IgKDsgZSAhPSBkLT5lbmQ7
ICsrZSkKIAkJCXsKLQkJCSAgaWYgKG5ld19lbmQtPmluZGV4ID09IE5VTExfVFJFRSkKKwkJCSAg
aWYgKGUtPmluZGV4ID09IE5VTExfVFJFRQorCQkJICAgICAgfHwgZS0+aW5kZXggPT0gZXJyb3Jf
bWFya19ub2RlKQogCQkJICAgIGJyZWFrOwogCQkJICBpZiAoZGVzaWdfdW5kby5zdGFydCkKIAkJ
CSAgICB7Ci0JCQkgICAgICBpZiAoVFJFRV9DT0RFIChuZXdfZW5kLT5pbmRleCkKLQkJCQkgICE9
IElERU5USUZJRVJfTk9ERSkKLQkJCQlicmVhazsKLQkJCSAgICAgIGZpZWxkID0gZ2V0X2NsYXNz
X2JpbmRpbmcgKHR5cGUsIG5ld19lbmQtPmluZGV4KTsKLQkJCSAgICAgIGlmIChmaWVsZCAhPSBO
VUxMX1RSRUUpCi0JCQkJYnJlYWs7Ci0JCQkgICAgICBmaWVsZCA9IGxvb2t1cF9tZW1iZXIgKHR5
cGUsIG5ld19lbmQtPmluZGV4LAorCQkJICAgICAgZ2NjX2Fzc2VydCAoVFJFRV9DT0RFIChlLT5p
bmRleCkKKwkJCQkJICA9PSBJREVOVElGSUVSX05PREUpOworCQkJICAgICAgZmllbGQgPSBsb29r
dXBfbWVtYmVyICh0eXBlLCBlLT5pbmRleCwKIAkJCQkJCSAgICAgLypwcm90ZWN0PSovMiwKIAkJ
CQkJCSAgICAgLyp3YW50X3R5cGU9Ki9mYWxzZSwKIAkJCQkJCSAgICAgdGZfbm9uZSk7CkBAIC03
OTg4LDMyICs3OTg5LDE1IEBAIHJlc2hhcGVfaW5pdF9jbGFzcyAodHJlZSB0eXBlLCByZXNoYXBl
X2l0ZXIgKmQsIGJvb2wgZmlyc3RfaW5pdGlhbGl6ZXJfcCwKIAkJCSAgICB9CiAJCQkgIGVsc2UK
IAkJCSAgICB7Ci0JCQkgICAgICBpZiAoVFJFRV9DT0RFIChuZXdfZW5kLT5pbmRleCkgIT0gRklF
TERfREVDTCkKLQkJCQlicmVhazsKLQkJCSAgICAgIGZpZWxkID0gbmV3X2VuZC0+aW5kZXg7CisJ
CQkgICAgICBnY2NfYXNzZXJ0IChUUkVFX0NPREUgKGUtPmluZGV4KSA9PSBGSUVMRF9ERUNMKTsK
KwkJCSAgICAgIGZpZWxkID0gZS0+aW5kZXg7CiAJCQkgICAgfQogCi0JCQkgIHRyZWUgbmljdHgg
PSBERUNMX0NPTlRFWFQgKGZpZWxkKTsKLQkJCSAgaWYgKHNhbWVfdHlwZV9pZ25vcmluZ190b3Bf
bGV2ZWxfcXVhbGlmaWVyc19wIChuaWN0eCwKLQkJCQkJCQkJCSB0eXBlKSkKLQkJCSAgICBicmVh
azsKLQkJCSAgd2hpbGUgKEFOT05fQUdHUl9UWVBFX1AgKG5pY3R4KSkKLQkJCSAgICBuaWN0eCA9
IFRZUEVfQ09OVEVYVCAobmljdHgpOwotCi0JCQkgIGliaW5mbyA9IGxvb2t1cF9iYXNlICh0eXBl
LCBuaWN0eCwgYmFfdW5pcXVlLCBOVUxMLAotCQkJCQkJdGZfbm9uZSk7Ci0JCQkgIGlmICghaWJp
bmZvIHx8IGliaW5mbyA9PSBlcnJvcl9tYXJrX25vZGUpCi0JCQkgICAgYnJlYWs7Ci0JCQkgIHdo
aWxlIChCSU5GT19JTkhFUklUQU5DRV9DSEFJTiAoaWJpbmZvKSAhPSBiaW5mbykKLQkJCSAgICBp
YmluZm8gPSBCSU5GT19JTkhFUklUQU5DRV9DSEFJTiAoaWJpbmZvKTsKLQkJCSAgaWYgKFRSRUVf
VFlQRSAoaWJpbmZvKSAhPSBpY3R4KQotCQkJICAgIGJyZWFrOwogCQkJICBpZiAoZGVzaWdfdW5k
by5zdGFydCkKLQkJCSAgICBuZXdfZW5kLT5pbmRleCA9IGZpZWxkOwotCQkJICBuZXdfZW5kKys7
CisJCQkgICAgZS0+aW5kZXggPSBmaWVsZDsKIAkJCX0KIAkJICAgICAgaWYgKGRlc2lnX3VuZG8u
c3RhcnQpCi0JCQlkZXNpZ191bmRvLmVuZCA9IG5ld19lbmQ7CisJCQlkZXNpZ191bmRvLmVuZCA9
IGU7CiAJCSAgICAgIGdvdG8gZm91bmQ7CiAJCSAgICB9CiAJCX0KQEAgLTgwMzIsNiArODAxNiw3
IEBAIHJlc2hhcGVfaW5pdF9jbGFzcyAodHJlZSB0eXBlLCByZXNoYXBlX2l0ZXIgKmQsIGJvb2wg
Zmlyc3RfaW5pdGlhbGl6ZXJfcCwKIAkgICAgICBnY2NfYXNzZXJ0IChhYWZpZWxkKTsKIAkgICAg
ICBmaWVsZCA9IGFhZmllbGQ7CiAJICAgICAgZGlyZWN0X2Rlc2lnID0gZmFsc2U7CisJICAgICAg
c3ViY2xhc3MgPSB0cnVlOwogCSAgICB9CiAJfQogCkBAIC04MDYzLDEzICs4MDQ4LDE3IEBAIHJl
c2hhcGVfaW5pdF9jbGFzcyAodHJlZSB0eXBlLCByZXNoYXBlX2l0ZXIgKmQsIGJvb2wgZmlyc3Rf
aW5pdGlhbGl6ZXJfcCwKIAkJCQkJICAgIGQtPmN1ci0+dmFsdWUsIGNvbXBsYWluKTsKIAkgIGQt
PmN1cisrOwogCX0KLSAgICAgIGVsc2UgaWYgKG5ld19lbmQpCisgICAgICBlbHNlIGlmIChzdWJj
bGFzcykKIAl7Ci0JICBkLT5lbmQgPSBuZXdfZW5kOworCSAgaWYgKGNvbXBsYWluICYgdGZfd2Fy
bmluZykKKwkgICAgd2FybmluZyAoT1BUX1dtaXNzaW5nX2JyYWNlcywKKwkJICAgICAibWlzc2lu
ZyBicmFjZXMgYXJvdW5kIGluaXRpYWxpemVyIGZvciAlcVQiLAorCQkgICAgIFRSRUVfVFlQRSAo
ZmllbGQpKTsKIAkgIGZpZWxkX2luaXQgPSByZXNoYXBlX2luaXRfY2xhc3MgKFRSRUVfVFlQRSAo
ZmllbGQpLCBkLAogCQkJCQkgICAvKmZpcnN0X2luaXRpYWxpemVyX3A9Ki9OVUxMX1RSRUUsCiAJ
CQkJCSAgIGNvbXBsYWluKTsKLQkgIGQtPmVuZCA9IG9sZF9lbmQ7CisJICBpZiAoVFJFRV9DT0RF
IChmaWVsZF9pbml0KSA9PSBDT05TVFJVQ1RPUikKKwkgICAgQ09OU1RSVUNUT1JfQlJBQ0VTX0VM
SURFRF9QIChmaWVsZF9pbml0KSA9IHRydWU7CiAJfQogICAgICAgZWxzZQogCWZpZWxkX2luaXQg
PSByZXNoYXBlX2luaXRfciAoVFJFRV9UWVBFIChmaWVsZCksIGQsCg==
--------------EDh29PkNeJU00a2vQ3OP1itC
Content-Type: text/x-patch; charset=UTF-8; name="reshape_r.patch"
Content-Disposition: attachment; filename="reshape_r.patch"
Content-Transfer-Encoding: base64

Y29tbWl0IGVhNDhjM2QyOTEzMjM4NGEzMmI4YzBmZDFlMDM2ODE4YWJiYjg5OTYKQXV0aG9yOiBK
YXNvbiBNZXJyaWxsIDxqYXNvbkByZWRoYXQuY29tPgpEYXRlOiAgIFR1ZSBBdWcgNCAxOTo0NTox
NyAyMDI2IC0wNDAwCgogICAgYXZvaWQgcmVzaGFwZV9pbml0X2NsYXNzIHJlY3Vyc2lvbgoKZGlm
ZiAtLWdpdCBhL2djYy9jcC9kZWNsLmNjIGIvZ2NjL2NwL2RlY2wuY2MKaW5kZXggYjVkOWVkMDU4
NzQuLmFjODIwZDUzZDc3IDEwMDY0NAotLS0gYS9nY2MvY3AvZGVjbC5jYworKysgYi9nY2MvY3Av
ZGVjbC5jYwpAQCAtNzQ3Myw2ICs3NDczLDcgQEAgc3RydWN0IHJlc2hhcGVfaXRlcgogfTsKIAog
c3RhdGljIHRyZWUgcmVzaGFwZV9pbml0X3IgKHRyZWUsIHJlc2hhcGVfaXRlciAqLCB0cmVlLCB0
c3Vic3RfZmxhZ3NfdCk7CitzdGF0aWMgdHJlZSByZXNoYXBlX3NpbmdsZV9pbml0ICh0cmVlLCB0
cmVlLCB0c3Vic3RfZmxhZ3NfdCk7CiAKIC8qIEZJRUxEIGlzIGFuIGVsZW1lbnQgb2YgVFlQRV9G
SUVMRFMgb3IgTlVMTC4gIEluIHRoZSBmb3JtZXIgY2FzZSwgdGhlIHZhbHVlCiAgICByZXR1cm5l
ZCBpcyB0aGUgbmV4dCBGSUVMRF9ERUNMIChwb3NzaWJseSBGSUVMRCBpdHNlbGYpIHRoYXQgY2Fu
IGJlCkBAIC03NjU5LDYgKzc2NjAsMTEgQEAgcmVzaGFwZV9pbml0X2FycmF5XzEgKHRyZWUgZWx0
X3R5cGUsIHRyZWUgbWF4X2luZGV4LCByZXNoYXBlX2l0ZXIgKmQsCiAJICAgIH0KIAkgIFRSRUVf
VFlQRSAoZWx0X2luaXQpID0gZWx0X3R5cGU7CiAJfQorICAgICAgZWxzZSBpZiAoZC0+Y3VyLT5p
bmRleCkKKwl7CisJICBlbHRfaW5pdCA9IHJlc2hhcGVfc2luZ2xlX2luaXQgKGVsdF90eXBlLCBk
LT5jdXItPnZhbHVlLCBjb21wbGFpbik7CisJICBkLT5jdXIrKzsKKwl9CiAgICAgICBlbHNlCiAJ
ZWx0X2luaXQgPSByZXNoYXBlX2luaXRfciAoZWx0X3R5cGUsIGQsCiAJCQkJICAgLypmaXJzdF9p
bml0aWFsaXplcl9wPSovTlVMTF9UUkVFLApAQCAtNzg1Niw3ICs3ODYyLDYgQEAgcmVzaGFwZV9p
bml0X2NsYXNzICh0cmVlIHR5cGUsIHJlc2hhcGVfaXRlciAqZCwgYm9vbCBmaXJzdF9pbml0aWFs
aXplcl9wLAogICAgICAgY29uc3RydWN0b3JfZWx0ICpvbGRfY3VyID0gZC0+Y3VyOwogICAgICAg
dW5zaWduZWQgb2xkX3Jhd19pZHggPSBkLT5yYXdfaWR4OwogICAgICAgYm9vbCBkaXJlY3RfZGVz
aWcgPSBmYWxzZTsKLSAgICAgIGJvb2wgc3ViY2xhc3MgPSBmYWxzZTsKIAogICAgICAgLyogSGFu
ZGxlIEMrKzIwIGRlc2lnbmF0ZWQgaW5pdGlhbGl6ZXJzLiAgKi8KICAgICAgIGlmIChkLT5jdXIt
PmluZGV4KQpAQCAtODAxNiw3ICs4MDIxLDYgQEAgcmVzaGFwZV9pbml0X2NsYXNzICh0cmVlIHR5
cGUsIHJlc2hhcGVfaXRlciAqZCwgYm9vbCBmaXJzdF9pbml0aWFsaXplcl9wLAogCSAgICAgIGdj
Y19hc3NlcnQgKGFhZmllbGQpOwogCSAgICAgIGZpZWxkID0gYWFmaWVsZDsKIAkgICAgICBkaXJl
Y3RfZGVzaWcgPSBmYWxzZTsKLQkgICAgICBzdWJjbGFzcyA9IHRydWU7CiAJICAgIH0KIAl9CiAK
QEAgLTgwNDgsMTggKzgwNTIsNiBAQCByZXNoYXBlX2luaXRfY2xhc3MgKHRyZWUgdHlwZSwgcmVz
aGFwZV9pdGVyICpkLCBib29sIGZpcnN0X2luaXRpYWxpemVyX3AsCiAJCQkJCSAgICBkLT5jdXIt
PnZhbHVlLCBjb21wbGFpbik7CiAJICBkLT5jdXIrKzsKIAl9Ci0gICAgICBlbHNlIGlmIChzdWJj
bGFzcykKLQl7Ci0JICBpZiAoY29tcGxhaW4gJiB0Zl93YXJuaW5nKQotCSAgICB3YXJuaW5nIChP
UFRfV21pc3NpbmdfYnJhY2VzLAotCQkgICAgICJtaXNzaW5nIGJyYWNlcyBhcm91bmQgaW5pdGlh
bGl6ZXIgZm9yICVxVCIsCi0JCSAgICAgVFJFRV9UWVBFIChmaWVsZCkpOwotCSAgZmllbGRfaW5p
dCA9IHJlc2hhcGVfaW5pdF9jbGFzcyAoVFJFRV9UWVBFIChmaWVsZCksIGQsCi0JCQkJCSAgIC8q
Zmlyc3RfaW5pdGlhbGl6ZXJfcD0qL05VTExfVFJFRSwKLQkJCQkJICAgY29tcGxhaW4pOwotCSAg
aWYgKFRSRUVfQ09ERSAoZmllbGRfaW5pdCkgPT0gQ09OU1RSVUNUT1IpCi0JICAgIENPTlNUUlVD
VE9SX0JSQUNFU19FTElERURfUCAoZmllbGRfaW5pdCkgPSB0cnVlOwotCX0KICAgICAgIGVsc2UK
IAlmaWVsZF9pbml0ID0gcmVzaGFwZV9pbml0X3IgKFRSRUVfVFlQRSAoZmllbGQpLCBkLAogCQkJ
CSAgICAgLypmaXJzdF9pbml0aWFsaXplcl9wPSovTlVMTF9UUkVFLApAQCAtODEyNiw5ICs4MTE4
LDEzIEBAIGhhc19kZXNpZ25hdG9yX3Byb2JsZW0gKHJlc2hhcGVfaXRlciAqZCwgdHN1YnN0X2Zs
YWdzX3QgY29tcGxhaW4pCiAgIGlmIChkLT5jdXItPmluZGV4KQogICAgIHsKICAgICAgIGlmIChj
b21wbGFpbiAmIHRmX2Vycm9yKQotCWVycm9yX2F0IChjcF9leHByX2xvY19vcl9pbnB1dF9sb2Mg
KGQtPmN1ci0+aW5kZXgpLAotCQkgICJDOTkgZGVzaWduYXRvciAlcUUgb3V0c2lkZSBhZ2dyZWdh
dGUgaW5pdGlhbGl6ZXIiLAotCQkgIGQtPmN1ci0+aW5kZXgpOworCXsKKwkgIGVycm9yX2F0IChj
cF9leHByX2xvY19vcl9pbnB1dF9sb2MgKGQtPmN1ci0+aW5kZXgpLAorCQkgICAgIkM5OSBkZXNp
Z25hdG9yICVxRSBvdXRzaWRlIGFnZ3JlZ2F0ZSBpbml0aWFsaXplciIsCisJCSAgICBkLT5jdXIt
PmluZGV4KTsKKwkgIC8qIEF2b2lkIGNvbmZ1c2lvbiBpbiByZXNoYXBlX2luaXRfci4gICovCisJ
ICBkLT5jdXItPmluZGV4ID0gTlVMTF9UUkVFOworCX0KICAgICAgIGVsc2UKIAlyZXR1cm4gdHJ1
ZTsKICAgICB9CkBAIC04MTg3LDEyICs4MTgzLDE0IEBAIHJlc2hhcGVfaW5pdF9yICh0cmVlIHR5
cGUsIHJlc2hhcGVfaXRlciAqZCwgdHJlZSBmaXJzdF9pbml0aWFsaXplcl9wLAogCiAgIC8qIEEg
bm9uLWFnZ3JlZ2F0ZSB0eXBlIGlzIGFsd2F5cyBpbml0aWFsaXplZCB3aXRoIGEgc2luZ2xlCiAg
ICAgIGluaXRpYWxpemVyLiAgKi8KLSAgaWYgKCFDUF9BR0dSRUdBVEVfVFlQRV9QICh0eXBlKQot
ICAgICAgLyogQXMgaXMgYW4gYXJyYXkgd2l0aCBkZXBlbmRlbnQgYm91bmQsIHdoaWNoIHdlIGNh
biBzZWUKLQkgZHVyaW5nIEMrKzIwIGFnZ3JlZ2F0ZSBDVEFELiAgKi8KLSAgICAgIHx8IChjeHhf
ZGlhbGVjdCA+PSBjeHgyMAotCSAgJiYgVFJFRV9DT0RFICh0eXBlKSA9PSBBUlJBWV9UWVBFCi0J
ICAmJiB1c2VzX3RlbXBsYXRlX3Bhcm1zIChUWVBFX0RPTUFJTiAodHlwZSkpKSkKKyAgaWYgKCgh
Q1BfQUdHUkVHQVRFX1RZUEVfUCAodHlwZSkKKyAgICAgICAvKiBBcyBpcyBhbiBhcnJheSB3aXRo
IGRlcGVuZGVudCBib3VuZCwgd2hpY2ggd2UgY2FuIHNlZQorCSAgZHVyaW5nIEMrKzIwIGFnZ3Jl
Z2F0ZSBDVEFELiAgKi8KKyAgICAgICB8fCAoY3h4X2RpYWxlY3QgPj0gY3h4MjAKKwkgICAmJiBU
UkVFX0NPREUgKHR5cGUpID09IEFSUkFZX1RZUEUKKwkgICAmJiB1c2VzX3RlbXBsYXRlX3Bhcm1z
IChUWVBFX0RPTUFJTiAodHlwZSkpKSkKKyAgICAgIC8qIEJ1dCBpZiB0aGVyZSdzIGEgZGVzaWdu
YXRvciwgZGVmZXIgc28gd2UgZGlhZ25vc2UgdGhhdC4gICovCisgICAgICAmJiAhZC0+Y3VyLT5p
bmRleCkKICAgICB7CiAgICAgICAvKiBJdCBpcyBpbnZhbGlkIHRvIGluaXRpYWxpemUgYSBub24t
YWdncmVnYXRlIHR5cGUgd2l0aCBhCiAJIGJyYWNlLWVuY2xvc2VkIGluaXRpYWxpemVyIGJlZm9y
ZSBDKysweC4KQEAgLTgyNTksNiArODI1Nyw4IEBAIHJlc2hhcGVfaW5pdF9yICh0cmVlIHR5cGUs
IHJlc2hhcGVfaXRlciAqZCwgdHJlZSBmaXJzdF9pbml0aWFsaXplcl9wLAogCSBsb29raW5nIHRo
cm91Z2ggdGhlIG91dGVybW9zdCBicmFjZXM7IEEgYTIgPSB7IGExIH07IGlzIG5vdCBhCiAJIHZh
bGlkIGFnZ3JlZ2F0ZSBpbml0aWFsaXphdGlvbi4gICovCiAgICAgICAmJiAhZmlyc3RfaW5pdGlh
bGl6ZXJfcAorICAgICAgLyogQnV0IGEgZGVzaWduYXRvciBjYW4gaW5kaWNhdGUgYnJhY2UgZWxp
c2lvbi4gICovCisgICAgICAmJiAhZC0+Y3VyLT5pbmRleAogICAgICAgJiYgKHNhbWVfdHlwZV9p
Z25vcmluZ190b3BfbGV2ZWxfcXVhbGlmaWVyc19wICh0eXBlLCBUUkVFX1RZUEUgKGluaXQpKQog
CSAgfHwgY2FuX2NvbnZlcnRfYXJnICh0eXBlLCBUUkVFX1RZUEUgKGluaXQpLAogCQkJICAgICAg
VFJFRV9DT0RFIChpbml0KSA9PSBSQVdfREFUQV9DU1QKQEAgLTgzMTMsNyArODMxMyw5IEBAIHJl
c2hhcGVfaW5pdF9yICh0cmVlIHR5cGUsIHJlc2hhcGVfaXRlciAqZCwgdHJlZSBmaXJzdF9pbml0
aWFsaXplcl9wLAogICBib29sIGJyYWNlc19lbGlkZWRfcCA9IGZhbHNlOwogICBpZiAoIWZpcnN0
X2luaXRpYWxpemVyX3ApCiAgICAgewotICAgICAgaWYgKFRSRUVfQ09ERSAoc3RyaXBwZWRfaW5p
dCkgPT0gQ09OU1RSVUNUT1IpCisgICAgICBpZiAoVFJFRV9DT0RFIChzdHJpcHBlZF9pbml0KSA9
PSBDT05TVFJVQ1RPUgorCSAgLyogSWYgYSBkZXNpZ25hdG9yIGdldHMgaGVyZSwgd2UncmUgbWlz
c2luZyBicmFjZXMuICAqLworCSAgJiYgIWQtPmN1ci0+aW5kZXgpCiAJewogCSAgdHJlZSBpbml0
X3R5cGUgPSBUUkVFX1RZUEUgKGluaXQpOwogCSAgaWYgKGluaXRfdHlwZSAmJiBUWVBFX1BUUk1F
TUZVTkNfUCAoaW5pdF90eXBlKSkKQEAgLTgzMjYsMTUgKzgzMjgsNiBAQCByZXNoYXBlX2luaXRf
ciAodHJlZSB0eXBlLCByZXNoYXBlX2l0ZXIgKmQsIHRyZWUgZmlyc3RfaW5pdGlhbGl6ZXJfcCwK
IAkgICAgIHRvIGhhbmRsZSBpbml0aWFsaXphdGlvbiBvZiBhcnJheXMgYW5kIHNpbWlsYXIuICAq
LwogCSAgZWxzZSBpZiAoQ09NUE9VTkRfTElURVJBTF9QIChzdHJpcHBlZF9pbml0KSkKIAkgICAg
Z2NjX2Fzc2VydCAoIUJSQUNFX0VOQ0xPU0VEX0lOSVRJQUxJWkVSX1AgKHN0cmlwcGVkX2luaXQp
KTsKLQkgIC8qIElmIHdlIGhhdmUgYW4gdW5yZXNvbHZlZCBkZXNpZ25hdG9yLCB3ZSBuZWVkIHRv
IGZpbmQgdGhlIG1lbWJlciBpdAotCSAgICAgZGVzaWduYXRlcyB3aXRoaW4gVFlQRSwgc28gcHJv
Y2VlZCB0byB0aGUgcm91dGluZXMgYmVsb3cuICBGb3IKLQkgICAgIEZJRUxEX0RFQ0wgb3IgSU5U
RUdFUl9DU1QgZGVzaWduYXRvcnMsIHdlJ3JlIGFscmVhZHkgaW5pdGlhbGl6aW5nCi0JICAgICB0
aGUgZGVzaWduYXRlZCBlbGVtZW50LiAgKi8KLQkgIGVsc2UgaWYgKGQtPmN1ci0+aW5kZXgKLQkJ
ICAgJiYgVFJFRV9DT0RFIChkLT5jdXItPmluZGV4KSA9PSBJREVOVElGSUVSX05PREUpCi0JICAg
IC8qIEJyYWNlIGVsaXNpb24gd2l0aCBkZXNpZ25hdG9ycyBpcyBvbmx5IHBlcm1pdHRlZCBmb3Ig
YW5vbnltb3VzCi0JICAgICAgIGFnZ3JlZ2F0ZXMuICAqLwotCSAgICBnY2NfY2hlY2tpbmdfYXNz
ZXJ0IChBTk9OX0FHR1JfVFlQRV9QICh0eXBlKSk7CiAJICAvKiBBIENPTlNUUlVDVE9SIG9mIHRo
ZSB0YXJnZXQncyB0eXBlIGlzIGEgcHJldmlvdXNseQogCSAgICAgZGlnZXN0ZWQgaW5pdGlhbGl6
ZXIuICAqLwogCSAgZWxzZSBpZiAoc2FtZV90eXBlX2lnbm9yaW5nX3RvcF9sZXZlbF9xdWFsaWZp
ZXJzX3AgKHR5cGUsIGluaXRfdHlwZSkpCg==
--------------EDh29PkNeJU00a2vQ3OP1itC--