Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:23476 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 50445 invoked by uid 1010); 16 May 2006 21:41:35 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 50430 invoked from network); 16 May 2006 21:41:35 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 16 May 2006 21:41:35 -0000 X-PHP-List-Original-Sender: helly@php.net X-Host-Fingerprint: 81.169.182.136 ajaxatwork.net Linux 2.4/2.6 Received: from ([81.169.182.136:59638] helo=strato.aixcept.de) by pb1.pair.com (ecelerity 2.0 beta r(6323M)) with SMTP id 44/32-19568-E074A644 for ; Tue, 16 May 2006 17:41:35 -0400 Received: from baumbart.mbo (dslb-084-063-059-004.pools.arcor-ip.net [84.63.59.4]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by strato.aixcept.de (Postfix) with ESMTP id 1D8AB35C1E9; Tue, 16 May 2006 23:41:31 +0200 (CEST) Date: Tue, 16 May 2006 23:41:37 +0200 Reply-To: Marcus Boerger X-Priority: 3 (Normal) Message-ID: <137131176.20060516234137@marcus-boerger.de> To: Zeev Suraski Cc: PHP internals In-Reply-To: <7.0.1.0.2.20060516235201.090f10a8@zend.com> References: <785810036.20060511193536@ionzoft.com> <44647B7A.2070301@php.net> <932738738.20060513112734@marcus-boerger.de> <837405862.20060513223403@ionzoft.com> <36828701.20060514110529@marcus-boerger.de> <31269879.20060514221212@marcus-boerger.de> <1327845846.20060514222154@marcus-boerger.de> <1562034641.20060516203354@marcus-boerger.de> <7.0.1.0.2.20060516235201.090f10a8@zend.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----------4461D815EBB1F9" Subject: Re: [PHP-DEV] private, protected, readonly, public From: helly@php.net (Marcus Boerger) ------------4461D815EBB1F9 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hello Zeev, Tuesday, May 16, 2006, 11:08:57 PM, you wrote: >> Anyway it adds complexity to what you >>have to learn about PHP. In fact seeing two visibility keywords separated >>by a colon should be easy enough to understand for everybody. > I'll be blunt as it's late here, but that's just ******** (decided to > censor myself). I for one would never guess what it means (well > actually my guess would be something to do with inheritance). Either > I'm an idiot, or you have a serious problem estimating what's obvious > and what's not... And before you say anything, no, I'm not an idiot :) I would never allow myself to even think that. Maybe you're right and it is just obvious to me as i wrote the patch. >>But noone >>would know which side is the read and which is the write side. The keyword >>'readable' on the otherhand would be absolutly clear even for beginners >>after at least thinking for a second. But oh i said thinking :-) > Again, ******** in my humble opinion. Readable from where? Does it > mean it's otherwise not readable? Does it mean that it's not > writable? From where? How does it relate to inheritance? Na 'readable' means readable whatever i said elsewhere, no? Not logical? > There's no way in hell to understand it without reading up on it, > and even then, it's not very easy to remember. > You've seen today someone saying that PPP is often tricky as it > is. So those 'horror stories' I'm telling are very much a > reality. You're suggesting that doesn't complicate it further? Please. Erm i heared somebody asking for 'friend' during php 5.0 development; And it wasn't me, i swear. >>The patch also allows any combinations in later version should we ever want >>to go that road which i do not see any sense in. E.g. private:public and >>protected:public make sense to me and are often a nice optimization and >>also a nice shortcu in development and easing the pain especially for >>beginners or small hacked to gether stuff. > Look, don't get me wrong, but if you pursue this private:public > thingie, I'll have to hurt you next time I see you :) Just no way. ouch! Well, it's just a stupid patch that comes without a new keyword. Mayke it 'private readable'. Btw, you asked for for a new visibility keyword starting with P: Promulgate, Popularize, Proclaim, Pliable. Those are at least remotely related to what they should express. Actually promulgate is in my humble opinion quite close :-) And since you get what you deserver you'll find the updated patch attached. Before you ask making it a single keyword on its own and giving the member private or protected write visibility is of cause very easy, too. >>However, the reason i write this mail is that you said there could be >>problems. Well this is deply integrated in the handlers and they don't >>let you out. In other words if this stuff is not working then the whole >>PHP 5+ object model is broken. Or in other words, if this is broken alot >>of other stuff regarding object handling is already broken. > You're probably right about this one. You can already return a > reference to a private variable today and change it. Andi - did you > mean something else? Best regards, Marcus before anyone gets that wrong again, i am having fun with the patch. ------------4461D815EBB1F9 Content-Type: text/plain; name="ze2-readable_properties-20060516.diff.txt" Content-transfer-encoding: base64 Content-Disposition: attachment; filename="ze2-readable_properties-20060516.diff.txt" SW5kZXg6IFplbmQvemVuZF9jb21waWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3Jl cG9zaXRvcnkvWmVuZEVuZ2luZTIvemVuZF9jb21waWxlLmgsdgpyZXRyaWV2aW5nIHJldmlz aW9uIDEuMzE2LjIuOC4yLjIKZGlmZiAtdSAtcCAtZCAtcjEuMzE2LjIuOC4yLjIgemVuZF9j b21waWxlLmgKLS0tIFplbmQvemVuZF9jb21waWxlLmgJMTEgTWF5IDIwMDYgMjE6MDc6Mzkg LTAwMDAJMS4zMTYuMi44LjIuMgorKysgWmVuZC96ZW5kX2NvbXBpbGUuaAkxNiBNYXkgMjAw NiAyMTozODo0MSAtMDAwMApAQCAtMTM5LDYgKzEzOSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBf emVuZF90cnlfY2F0Y2hfZWxlbWVudCB7CiAvKiBkZXByZWNhdGlvbiBmbGFnICovCiAjZGVm aW5lIFpFTkRfQUNDX0RFUFJFQ0FURUQgMHg0MDAwMAogCisvKiBwcm9wZXJ0eSBoYW5kbGlu ZyBjb250cm9sICovCisjZGVmaW5lIFpFTkRfQUNDX1JFQURfT05MWSAgMHgwODAwMDAKKyNk ZWZpbmUgWkVORF9BQ0NfUFVCX1JFQUQgICAweDEwMDAwMAorCiBjaGFyICp6ZW5kX3Zpc2li aWxpdHlfc3RyaW5nKHplbmRfdWludCBmbl9mbGFncyk7CiAKIApJbmRleDogWmVuZC96ZW5k X2xhbmd1YWdlX3BhcnNlci55Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5 L1plbmRFbmdpbmUyL3plbmRfbGFuZ3VhZ2VfcGFyc2VyLnksdgpyZXRyaWV2aW5nIHJldmlz aW9uIDEuMTYwLjIuNC4yLjEKZGlmZiAtdSAtcCAtZCAtcjEuMTYwLjIuNC4yLjEgemVuZF9s YW5ndWFnZV9wYXJzZXIueQotLS0gWmVuZC96ZW5kX2xhbmd1YWdlX3BhcnNlci55CTExIE1h eSAyMDA2IDIxOjA3OjM5IC0wMDAwCTEuMTYwLjIuNC4yLjEKKysrIFplbmQvemVuZF9sYW5n dWFnZV9wYXJzZXIueQkxNiBNYXkgMjAwNiAyMTozODo0MSAtMDAwMApAQCAtMTE1LDcgKzEx NSw3IEBACiAldG9rZW4gVF9USFJPVwogJXRva2VuIFRfVVNFCiAldG9rZW4gVF9HTE9CQUwK LSVyaWdodCBUX1NUQVRJQyBUX0FCU1RSQUNUIFRfRklOQUwgVF9QUklWQVRFIFRfUFJPVEVD VEVEIFRfUFVCTElDCislcmlnaHQgVF9TVEFUSUMgVF9BQlNUUkFDVCBUX0ZJTkFMIFRfUFJJ VkFURSBUX1BST1RFQ1RFRCBUX1BVQkxJQyBUX1BST01VTEdBVEUKICV0b2tlbiBUX1ZBUgog JXRva2VuIFRfVU5TRVQKICV0b2tlbiBUX0lTU0VUCkBAIC01MDAsOCArNTAwLDkgQEAgbWV0 aG9kX2JvZHk6CiA7CiAKIHZhcmlhYmxlX21vZGlmaWVyczoKLQkJbm9uX2VtcHR5X21lbWJl cl9tb2RpZmllcnMJCXsgJCQgPSAkMTsgfQotCXwJVF9WQVIJCQkJCQkJeyBaX0xWQUwoJCQu dS5jb25zdGFudCkgPSBaRU5EX0FDQ19QVUJMSUM7IH0KKwkJbm9uX2VtcHR5X21lbWJlcl9t b2RpZmllcnMJCQkJeyAkJCA9ICQxOyB9CisJfAlub25fZW1wdHlfbWVtYmVyX21vZGlmaWVy cyBUX1BST01VTEdBVEUJeyAkJCA9ICQxOyBaX0xWQUwoJCQudS5jb25zdGFudCkgfD0gWkVO RF9BQ0NfUFVCX1JFQUQ7IH0KKwl8CVRfVkFSCQkJCQkJCQkJeyBaX0xWQUwoJCQudS5jb25z dGFudCkgPSBaRU5EX0FDQ19QVUJMSUM7IH0KIDsKIAogbWV0aG9kX21vZGlmaWVyczoKSW5k ZXg6IFplbmQvemVuZF9sYW5ndWFnZV9zY2FubmVyLmwKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls ZTogL3JlcG9zaXRvcnkvWmVuZEVuZ2luZTIvemVuZF9sYW5ndWFnZV9zY2FubmVyLmwsdgpy ZXRyaWV2aW5nIHJldmlzaW9uIDEuMTMxLjIuMTEKZGlmZiAtdSAtcCAtZCAtcjEuMTMxLjIu MTEgemVuZF9sYW5ndWFnZV9zY2FubmVyLmwKLS0tIFplbmQvemVuZF9sYW5ndWFnZV9zY2Fu bmVyLmwJMTMgQXByIDIwMDYgMTM6NDg6MjggLTAwMDAJMS4xMzEuMi4xMQorKysgWmVuZC96 ZW5kX2xhbmd1YWdlX3NjYW5uZXIubAkxNiBNYXkgMjAwNiAyMTozODo0MiAtMDAwMApAQCAt MTA2Myw2ICsxMDYzLDEwIEBAIE5FV0xJTkUgKCJcciJ8IlxuInwiXHJcbiIpCiAJcmV0dXJu IFRfUFVCTElDOwogfQogCis8U1RfSU5fU0NSSVBUSU5HPiJwcm9tdWxnYXRlIiB7CisJcmV0 dXJuIFRfUFJPTVVMR0FURTsKK30KKwogPFNUX0lOX1NDUklQVElORz4idW5zZXQiIHsKIAly ZXR1cm4gVF9VTlNFVDsKIH0KSW5kZXg6IFplbmQvemVuZF9vYmplY3RfaGFuZGxlcnMuYwo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3NpdG9yeS9aZW5kRW5naW5lMi96ZW5kX29i amVjdF9oYW5kbGVycy5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEzNS4yLjYuMi4yCmRp ZmYgLXUgLXAgLWQgLXIxLjEzNS4yLjYuMi4yIHplbmRfb2JqZWN0X2hhbmRsZXJzLmMKLS0t IFplbmQvemVuZF9vYmplY3RfaGFuZGxlcnMuYwkxMCBNYXkgMjAwNiAyMToxMjo0OCAtMDAw MAkxLjEzNS4yLjYuMi4yCisrKyBaZW5kL3plbmRfb2JqZWN0X2hhbmRsZXJzLmMJMTYgTWF5 IDIwMDYgMjE6Mzg6NDIgLTAwMDAKQEAgLTE0NCwyMCArMTQ0LDI2IEBAIHN0YXRpYyB6dmFs ICp6ZW5kX3N0ZF9jYWxsX2lzc2V0dGVyKHp2YWwKIAlyZXR1cm4gcmV0dmFsOwogfQogCi1z dGF0aWMgaW50IHplbmRfdmVyaWZ5X3Byb3BlcnR5X2FjY2Vzcyh6ZW5kX3Byb3BlcnR5X2lu Zm8gKnByb3BlcnR5X2luZm8sIHplbmRfY2xhc3NfZW50cnkgKmNlIFRTUk1MU19EQykKK3N0 YXRpYyBpbnQgemVuZF92ZXJpZnlfcHJvcGVydHlfYWNjZXNzKHplbmRfcHJvcGVydHlfaW5m byAqcHJvcGVydHlfaW5mbywgemVuZF9jbGFzc19lbnRyeSAqY2UsIGludCByZWFkX3dyaXRl IFRTUk1MU19EQykKIHsKKwlpZiAoIXJlYWRfd3JpdGUgJiYgKHByb3BlcnR5X2luZm8tPmZs YWdzICYgWkVORF9BQ0NfUkVBRF9PTkxZKSkgeworCQlyZXR1cm4gMDsKKwl9CiAJc3dpdGNo IChwcm9wZXJ0eV9pbmZvLT5mbGFncyAmIFpFTkRfQUNDX1BQUF9NQVNLKSB7CiAJCWNhc2Ug WkVORF9BQ0NfUFVCTElDOgogCQkJcmV0dXJuIDE7CiAJCWNhc2UgWkVORF9BQ0NfUFJPVEVD VEVEOgotCQkJcmV0dXJuIHplbmRfY2hlY2tfcHJvdGVjdGVkKGNlLCBFRyhzY29wZSkpOwor CQkJaWYgKChwcm9wZXJ0eV9pbmZvLT5mbGFncyAmIFpFTkRfQUNDX1BVQl9SRUFEKSAmJiBy ZWFkX3dyaXRlKSB7CisJCQkJcmV0dXJuIDE7CisJCQl9IGVsc2UgeworCQkJCXJldHVybiB6 ZW5kX2NoZWNrX3Byb3RlY3RlZChjZSwgRUcoc2NvcGUpKTsKKwkJCX0KIAkJY2FzZSBaRU5E X0FDQ19QUklWQVRFOgotCQkJaWYgKGNlPT1FRyhzY29wZSkgJiYgRUcoc2NvcGUpKSB7CisJ CQlpZiAoKGNlID09IEVHKHNjb3BlKSAmJiBjZSkgfHwgKChwcm9wZXJ0eV9pbmZvLT5mbGFn cyAmIFpFTkRfQUNDX1BVQl9SRUFEKSAmJiByZWFkX3dyaXRlKSkgewogCQkJCXJldHVybiAx OwogCQkJfSBlbHNlIHsKIAkJCQlyZXR1cm4gMDsKIAkJCX0KLQkJCWJyZWFrOwogCX0KIAly ZXR1cm4gMDsKIH0KQEAgLTE3NSw3ICsxODEsNyBAQCBzdGF0aWMgaW5saW5lIHplbmRfYm9v bCBpc19kZXJpdmVkX2NsYXNzCiAJcmV0dXJuIDA7CiB9CiAKLVpFTkRfQVBJIHN0cnVjdCBf emVuZF9wcm9wZXJ0eV9pbmZvICp6ZW5kX2dldF9wcm9wZXJ0eV9pbmZvKHplbmRfY2xhc3Nf ZW50cnkgKmNlLCB6dmFsICptZW1iZXIsIGludCBzaWxlbnQgVFNSTUxTX0RDKQorWkVORF9B UEkgc3RydWN0IF96ZW5kX3Byb3BlcnR5X2luZm8gKnplbmRfZ2V0X3Byb3BlcnR5X2luZm9f ZXgoemVuZF9jbGFzc19lbnRyeSAqY2UsIHp2YWwgKm1lbWJlciwgaW50IHNpbGVudCwgaW50 IHJlYWRfd3JpdGUgVFNSTUxTX0RDKQogewogCXplbmRfcHJvcGVydHlfaW5mbyAqcHJvcGVy dHlfaW5mbyA9IE5VTEw7CiAJemVuZF9wcm9wZXJ0eV9pbmZvICpzY29wZV9wcm9wZXJ0eV9p bmZvOwpAQCAtMTk4LDcgKzIwNCw3IEBAIFpFTkRfQVBJIHN0cnVjdCBfemVuZF9wcm9wZXJ0 eV9pbmZvICp6ZW4KIAkJCS8qIGlmIGl0J3MgYSBzaGFkb3cgLSBnbyB0byBhY2Nlc3MgaXQn cyBwcml2YXRlICovCiAJCQlwcm9wZXJ0eV9pbmZvID0gTlVMTDsKIAkJfSBlbHNlIHsKLQkJ CWlmICh6ZW5kX3ZlcmlmeV9wcm9wZXJ0eV9hY2Nlc3MocHJvcGVydHlfaW5mbywgY2UgVFNS TUxTX0NDKSkgeworCQkJaWYgKHplbmRfdmVyaWZ5X3Byb3BlcnR5X2FjY2Vzcyhwcm9wZXJ0 eV9pbmZvLCBjZSwgcmVhZF93cml0ZSBUU1JNTFNfQ0MpKSB7CiAJCQkJaWYgKHByb3BlcnR5 X2luZm8tPmZsYWdzICYgWkVORF9BQ0NfQ0hBTkdFRAogCQkJCQkmJiAhKHByb3BlcnR5X2lu Zm8tPmZsYWdzICYgWkVORF9BQ0NfUFJJVkFURSkpIHsKIAkJCQkJLyogV2Ugc3RpbGwgbmVl ZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSdyZSBub3QgaW4gYSBjb250ZXh0CkBAIC0yNDQsNiAr MjUwLDExIEBAIFpFTkRfQVBJIHN0cnVjdCBfemVuZF9wcm9wZXJ0eV9pbmZvICp6ZW4KIH0K IAogCitaRU5EX0FQSSBzdHJ1Y3QgX3plbmRfcHJvcGVydHlfaW5mbyAqemVuZF9nZXRfcHJv cGVydHlfaW5mbyh6ZW5kX2NsYXNzX2VudHJ5ICpjZSwgenZhbCAqbWVtYmVyLCBpbnQgc2ls ZW50IFRTUk1MU19EQykKK3sKKwlyZXR1cm4gemVuZF9nZXRfcHJvcGVydHlfaW5mb19leChj ZSwgbWVtYmVyLCBzaWxlbnQsIDAgVFNSTUxTX0NDKTsKK30KKwogWkVORF9BUEkgaW50IHpl bmRfY2hlY2tfcHJvcGVydHlfYWNjZXNzKHplbmRfb2JqZWN0ICp6b2JqLCBjaGFyICpwcm9w X2luZm9fbmFtZSBUU1JNTFNfREMpCiB7CiAJemVuZF9wcm9wZXJ0eV9pbmZvICpwcm9wZXJ0 eV9pbmZvOwpAQCAtMjUyLDcgKzI2Myw3IEBAIFpFTkRfQVBJIGludCB6ZW5kX2NoZWNrX3By b3BlcnR5X2FjY2VzcygKIAogCXplbmRfdW5tYW5nbGVfcHJvcGVydHlfbmFtZShwcm9wX2lu Zm9fbmFtZSwgJmNsYXNzX25hbWUsICZwcm9wX25hbWUpOwogCVpWQUxfU1RSSU5HKCZtZW1i ZXIsIHByb3BfbmFtZSwgMCk7Ci0JcHJvcGVydHlfaW5mbyA9IHplbmRfZ2V0X3Byb3BlcnR5 X2luZm8oem9iai0+Y2UsICZtZW1iZXIsIDEgVFNSTUxTX0NDKTsKKwlwcm9wZXJ0eV9pbmZv ID0gemVuZF9nZXRfcHJvcGVydHlfaW5mb19leCh6b2JqLT5jZSwgJm1lbWJlciwgMSwgMCBU U1JNTFNfQ0MpOwogCWlmICghcHJvcGVydHlfaW5mbykgewogCQlyZXR1cm4gRkFJTFVSRTsK IAl9CkBAIC0yNjUsNyArMjc2LDcgQEAgWkVORF9BUEkgaW50IHplbmRfY2hlY2tfcHJvcGVy dHlfYWNjZXNzKAogCQkJcmV0dXJuIEZBSUxVUkU7CiAJCX0KIAl9Ci0JcmV0dXJuIHplbmRf dmVyaWZ5X3Byb3BlcnR5X2FjY2Vzcyhwcm9wZXJ0eV9pbmZvLCB6b2JqLT5jZSBUU1JNTFNf Q0MpID8gU1VDQ0VTUyA6IEZBSUxVUkU7CisJcmV0dXJuIHplbmRfdmVyaWZ5X3Byb3BlcnR5 X2FjY2Vzcyhwcm9wZXJ0eV9pbmZvLCB6b2JqLT5jZSwgMSBUU1JNTFNfQ0MpID8gU1VDQ0VT UyA6IEZBSUxVUkU7CiB9CiAKIHN0YXRpYyBpbnQgemVuZF9nZXRfcHJvcGVydHlfZ3VhcmQo emVuZF9vYmplY3QgKnpvYmosIHplbmRfcHJvcGVydHlfaW5mbyAqcHJvcGVydHlfaW5mbywg enZhbCAqbWVtYmVyLCB6ZW5kX2d1YXJkICoqcGd1YXJkKQpAQCAtMzE4LDcgKzMyOSw3IEBA IHp2YWwgKnplbmRfc3RkX3JlYWRfcHJvcGVydHkoenZhbCAqb2JqZWMKICNlbmRpZgkJCQog CiAJLyogbWFrZSB6ZW5kX2dldF9wcm9wZXJ0eV9pbmZvIHNpbGVudCBpZiB3ZSBoYXZlIGdl dHRlciAtIHdlIG1heSB3YW50IHRvIHVzZSBpdCAqLwotCXByb3BlcnR5X2luZm8gPSB6ZW5k X2dldF9wcm9wZXJ0eV9pbmZvKHpvYmotPmNlLCBtZW1iZXIsICh6b2JqLT5jZS0+X19nZXQg IT0gTlVMTCkgVFNSTUxTX0NDKTsKKwlwcm9wZXJ0eV9pbmZvID0gemVuZF9nZXRfcHJvcGVy dHlfaW5mb19leCh6b2JqLT5jZSwgbWVtYmVyLCAoem9iai0+Y2UtPl9fZ2V0ICE9IE5VTEwp LCAxIFRTUk1MU19DQyk7CiAKIAlpZiAoIXByb3BlcnR5X2luZm8gfHwgemVuZF9oYXNoX3F1 aWNrX2ZpbmQoem9iai0+cHJvcGVydGllcywgcHJvcGVydHlfaW5mby0+bmFtZSwgcHJvcGVy dHlfaW5mby0+bmFtZV9sZW5ndGgrMSwgcHJvcGVydHlfaW5mby0+aCwgKHZvaWQgKiopICZy ZXR2YWwpID09IEZBSUxVUkUpIHsKIAkJemVuZF9ndWFyZCAqZ3VhcmQ7CkBAIC0zNzEsNyAr MzgyLDcgQEAgc3RhdGljIHZvaWQgemVuZF9zdGRfd3JpdGVfcHJvcGVydHkoenZhbAogCQlt ZW1iZXIgPSB0bXBfbWVtYmVyOwogCX0KIAotCXByb3BlcnR5X2luZm8gPSB6ZW5kX2dldF9w cm9wZXJ0eV9pbmZvKHpvYmotPmNlLCBtZW1iZXIsICh6b2JqLT5jZS0+X19zZXQgIT0gTlVM TCkgVFNSTUxTX0NDKTsKKwlwcm9wZXJ0eV9pbmZvID0gemVuZF9nZXRfcHJvcGVydHlfaW5m b19leCh6b2JqLT5jZSwgbWVtYmVyLCAoem9iai0+Y2UtPl9fc2V0ICE9IE5VTEwpLCAwIFRT Uk1MU19DQyk7CiAKIAlpZiAocHJvcGVydHlfaW5mbyAmJiB6ZW5kX2hhc2hfcXVpY2tfZmlu ZCh6b2JqLT5wcm9wZXJ0aWVzLCBwcm9wZXJ0eV9pbmZvLT5uYW1lLCBwcm9wZXJ0eV9pbmZv LT5uYW1lX2xlbmd0aCsxLCBwcm9wZXJ0eV9pbmZvLT5oLCAodm9pZCAqKikgJnZhcmlhYmxl X3B0cikgPT0gU1VDQ0VTUykgewogCQlpZiAoKnZhcmlhYmxlX3B0ciA9PSB2YWx1ZSkgewpA QCAtNTI2LDcgKzUzNyw3IEBAIHN0YXRpYyB6dmFsICoqemVuZF9zdGRfZ2V0X3Byb3BlcnR5 X3B0cl8KIAlmcHJpbnRmKHN0ZGVyciwgIlB0ciBvYmplY3QgIyVkIHByb3BlcnR5OiAlc1xu IiwgWl9PQkpfSEFORExFX1Aob2JqZWN0KSwgWl9TVFJWQUxfUChtZW1iZXIpKTsKICNlbmRp ZgogCi0JcHJvcGVydHlfaW5mbyA9IHplbmRfZ2V0X3Byb3BlcnR5X2luZm8oem9iai0+Y2Us IG1lbWJlciwgKHpvYmotPmNlLT5fX2dldCAhPSBOVUxMKSBUU1JNTFNfQ0MpOworCXByb3Bl cnR5X2luZm8gPSB6ZW5kX2dldF9wcm9wZXJ0eV9pbmZvX2V4KHpvYmotPmNlLCBtZW1iZXIs ICh6b2JqLT5jZS0+X19nZXQgIT0gTlVMTCksIDAgVFNSTUxTX0NDKTsKIAogCWlmICghcHJv cGVydHlfaW5mbyB8fCB6ZW5kX2hhc2hfcXVpY2tfZmluZCh6b2JqLT5wcm9wZXJ0aWVzLCBw cm9wZXJ0eV9pbmZvLT5uYW1lLCBwcm9wZXJ0eV9pbmZvLT5uYW1lX2xlbmd0aCsxLCBwcm9w ZXJ0eV9pbmZvLT5oLCAodm9pZCAqKikgJnJldHZhbCkgPT0gRkFJTFVSRSkgewogCQl6dmFs ICpuZXdfenZhbDsKQEAgLTU3MCw3ICs1ODEsNyBAQCBzdGF0aWMgdm9pZCB6ZW5kX3N0ZF91 bnNldF9wcm9wZXJ0eSh6dmFsCiAJCW1lbWJlciA9IHRtcF9tZW1iZXI7CiAJfQogCi0JcHJv cGVydHlfaW5mbyA9IHplbmRfZ2V0X3Byb3BlcnR5X2luZm8oem9iai0+Y2UsIG1lbWJlciwg KHpvYmotPmNlLT5fX3Vuc2V0ICE9IE5VTEwpIFRTUk1MU19DQyk7CisJcHJvcGVydHlfaW5m byA9IHplbmRfZ2V0X3Byb3BlcnR5X2luZm9fZXgoem9iai0+Y2UsIG1lbWJlciwgKHpvYmot PmNlLT5fX3Vuc2V0ICE9IE5VTEwpLCAwIFRTUk1MU19DQyk7CiAKIAlpZiAoIXByb3BlcnR5 X2luZm8gfHwgemVuZF9oYXNoX2RlbCh6b2JqLT5wcm9wZXJ0aWVzLCBwcm9wZXJ0eV9pbmZv LT5uYW1lLCBwcm9wZXJ0eV9pbmZvLT5uYW1lX2xlbmd0aCsxKSA9PSBGQUlMVVJFKSB7CiAJ CXplbmRfZ3VhcmQgKmd1YXJkOwpAQCAtODQ5LDcgKzg2MCw3IEBAIFpFTkRfQVBJIHp2YWwg Kip6ZW5kX3N0ZF9nZXRfc3RhdGljX3Byb3AKIAl6ZW5kX3ByaW50ZigiQWNjZXNzIHR5cGUg Zm9yICVzOjolcyBpcyAlc1xuIiwgY2UtPm5hbWUsIHByb3BlcnR5X25hbWUsIHplbmRfdmlz aWJpbGl0eV9zdHJpbmcocHJvcGVydHlfaW5mby0+ZmxhZ3MpKTsKICNlbmRpZgogCi0JaWYg KCF6ZW5kX3ZlcmlmeV9wcm9wZXJ0eV9hY2Nlc3MocHJvcGVydHlfaW5mbywgY2UgVFNSTUxT X0NDKSkgeworCWlmICghemVuZF92ZXJpZnlfcHJvcGVydHlfYWNjZXNzKHByb3BlcnR5X2lu Zm8sIGNlLCAxIFRTUk1MU19DQykpIHsKIAkJaWYgKCFzaWxlbnQpIHsKIAkJCXplbmRfZXJy b3IoRV9FUlJPUiwgIkNhbm5vdCBhY2Nlc3MgJXMgcHJvcGVydHkgJXM6OiQlcyIsIHplbmRf dmlzaWJpbGl0eV9zdHJpbmcocHJvcGVydHlfaW5mby0+ZmxhZ3MpLCBjZS0+bmFtZSwgcHJv cGVydHlfbmFtZSk7CiAJCX0KQEAgLTk0NSw3ICs5NTYsNyBAQCBzdGF0aWMgaW50IHplbmRf c3RkX2hhc19wcm9wZXJ0eSh6dmFsICpvCiAJZnByaW50ZihzdGRlcnIsICJSZWFkIG9iamVj dCAjJWQgcHJvcGVydHk6ICVzXG4iLCBaX09CSl9IQU5ETEVfUChvYmplY3QpLCBaX1NUUlZB TF9QKG1lbWJlcikpOwogI2VuZGlmCiAKLQlwcm9wZXJ0eV9pbmZvID0gemVuZF9nZXRfcHJv cGVydHlfaW5mbyh6b2JqLT5jZSwgbWVtYmVyLCAxIFRTUk1MU19DQyk7CisJcHJvcGVydHlf aW5mbyA9IHplbmRfZ2V0X3Byb3BlcnR5X2luZm9fZXgoem9iai0+Y2UsIG1lbWJlciwgMSwg MCBUU1JNTFNfQ0MpOwogCiAJaWYgKCFwcm9wZXJ0eV9pbmZvIHx8IHplbmRfaGFzaF9xdWlj a19maW5kKHpvYmotPnByb3BlcnRpZXMsIHByb3BlcnR5X2luZm8tPm5hbWUsIHByb3BlcnR5 X2luZm8tPm5hbWVfbGVuZ3RoKzEsIHByb3BlcnR5X2luZm8tPmgsICh2b2lkICoqKSAmdmFs dWUpID09IEZBSUxVUkUpIHsKIAkJemVuZF9ndWFyZCAqZ3VhcmQ7CkluZGV4OiBaZW5kL3pl bmRfb2JqZWN0X2hhbmRsZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3JlcG9zaXRv cnkvWmVuZEVuZ2luZTIvemVuZF9vYmplY3RfaGFuZGxlcnMuaCx2CnJldHJpZXZpbmcgcmV2 aXNpb24gMS40Ny4yLjIuMi4xCmRpZmYgLXUgLXAgLWQgLXIxLjQ3LjIuMi4yLjEgemVuZF9v YmplY3RfaGFuZGxlcnMuaAotLS0gWmVuZC96ZW5kX29iamVjdF9oYW5kbGVycy5oCTkgTWF5 IDIwMDYgMjM6NTM6MjMgLTAwMDAJMS40Ny4yLjIuMi4xCisrKyBaZW5kL3plbmRfb2JqZWN0 X2hhbmRsZXJzLmgJMTYgTWF5IDIwMDYgMjE6Mzg6NDIgLTAwMDAKQEAgLTE0MCw2ICsxNDAs NyBAQCBCRUdJTl9FWFRFUk5fQygpCiBaRU5EX0FQSSB1bmlvbiBfemVuZF9mdW5jdGlvbiAq emVuZF9zdGRfZ2V0X3N0YXRpY19tZXRob2QoemVuZF9jbGFzc19lbnRyeSAqY2UsIGNoYXIg KmZ1bmN0aW9uX25hbWVfc3RydmFsLCBpbnQgZnVuY3Rpb25fbmFtZV9zdHJsZW4gVFNSTUxT X0RDKTsKIFpFTkRfQVBJIHp2YWwgKip6ZW5kX3N0ZF9nZXRfc3RhdGljX3Byb3BlcnR5KHpl bmRfY2xhc3NfZW50cnkgKmNlLCBjaGFyICpwcm9wZXJ0eV9uYW1lLCBpbnQgcHJvcGVydHlf bmFtZV9sZW4sIHplbmRfYm9vbCBzaWxlbnQgVFNSTUxTX0RDKTsKIFpFTkRfQVBJIHplbmRf Ym9vbCB6ZW5kX3N0ZF91bnNldF9zdGF0aWNfcHJvcGVydHkoemVuZF9jbGFzc19lbnRyeSAq Y2UsIGNoYXIgKnByb3BlcnR5X25hbWUsIGludCBwcm9wZXJ0eV9uYW1lX2xlbiBUU1JNTFNf REMpOworWkVORF9BUEkgc3RydWN0IF96ZW5kX3Byb3BlcnR5X2luZm8gKnplbmRfZ2V0X3By b3BlcnR5X2luZm9fZXgoemVuZF9jbGFzc19lbnRyeSAqY2UsIHp2YWwgKm1lbWJlciwgaW50 IHNpbGVudCwgaW50IHJlYWRfd3JpdGUgVFNSTUxTX0RDKTsKIFpFTkRfQVBJIHN0cnVjdCBf emVuZF9wcm9wZXJ0eV9pbmZvICp6ZW5kX2dldF9wcm9wZXJ0eV9pbmZvKHplbmRfY2xhc3Nf ZW50cnkgKmNlLCB6dmFsICptZW1iZXIsIGludCBzaWxlbnQgVFNSTUxTX0RDKTsKIAogWkVO RF9BUEkgaW50IHplbmRfc3RkX2Nhc3Rfb2JqZWN0X3Rvc3RyaW5nKHp2YWwgKnJlYWRvYmos IHp2YWwgKndyaXRlb2JqLCBpbnQgdHlwZSBUU1JNTFNfREMpOwo= ------------4461D815EBB1F9--