Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:23345 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 44671 invoked by uid 1010); 14 May 2006 20:22:01 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 44654 invoked from network); 14 May 2006 20:22:01 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 14 May 2006 20:22:01 -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:52773] helo=strato.aixcept.de) by pb1.pair.com (ecelerity 2.0 beta r(6323M)) with SMTP id 01/38-19568-66197644 for ; Sun, 14 May 2006 16:21:59 -0400 Received: from baumbart.mbo (dslb-084-063-032-006.pools.arcor-ip.net [84.63.32.6]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by strato.aixcept.de (Postfix) with ESMTP id 4B98B35C1E8; Sun, 14 May 2006 22:21:54 +0200 (CEST) Date: Sun, 14 May 2006 22:21:54 +0200 Reply-To: Marcus Boerger X-Priority: 3 (Normal) Message-ID: <1327845846.20060514222154@marcus-boerger.de> To: internals@lists.php.net Cc: Marcus Boerger In-Reply-To: <31269879.20060514221212@marcus-boerger.de> 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> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----------7B18D4F3FFF01E9" Subject: Re: [PHP-DEV] private, protected, readonly, public From: helly@php.net (Marcus Boerger) ------------7B18D4F3FFF01E9 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hello internals, sorry the patch got lost somehow, here it is :-) regards marcus Sunday, May 14, 2006, 10:12:12 PM, you wrote: > Hello guys, > after some incantations i came to the attached improved patch that > allows to give properties any visibility plus mark them as public > readable. The patch also implements the PHP 6.0 todo item 'readonly > for overloaded objects'. > The code now looks like: > class Test { > private:public $x = 42; > } > $obj = new Test; > var_dump($obj->x); ?>> > Note, that this adheres to the following EBNF: > := + (':' )? '$' ';' > := 'var' | 'public' | 'protected' | 'private' > := 'public' > := [_a-zA_Z][_a-zA_Z0-9]* > Adding 'protected' to is possible to but code wise a > tiny bit more complex. Chaging the order is of cause also possible. > best regards > marcus > Sunday, May 14, 2006, 11:05:29 AM, you wrote: >> Hello Jason, >> Sunday, May 14, 2006, 4:34:03 AM, you wrote: >>> Hello Marcus, >>> class x >>> { >>> public readonly $xyz; >>> protected readonly $abc; >>> } >>> Definitions: >>> - public readonly - outside class can only read, not write. >>> - protected readonly - subclass can only read, not write. >>> - private readonly - does not make sense - do not support. >>> How difficult would it be to build this into the PHP engine? >>> -- >>> Best regards, >>> Jason mailto:jason@ionzoft.com >>> Saturday, May 13, 2006, 5:27:34 AM, you wrote: MB>>>> Hello Etienne, MB>>>> Friday, May 12, 2006, 2:11:38 PM, you wrote: >>>>> Hi, >>>>> my 2c: >>>>> 1) it shouldn't replace the visibility definition: we could also have >>>>> protected readonly properties. MB>>>> same here visibility and read/write control are two seperate things. >>>>> 3) how would you check if the property if readonly ? Trying it could >>>>> result to a Fatal error as you wanted. You would then need a >>>>> isReadonly() method/function: the function call wouldn't be spared. MB>>>> We could add this to reflection api easily. >> Here's your diff to play around :-) >> The impact on runtime is a single additional integer check for protected >> properties and an additional check for private proeprties where property >> access would normally fail. For this 5 minute patch i chose the key word >> 'readonly' as supposed. Actually writing the mail took much longer than >> brewing the patch and yes i din't care for syntax right now. >> php -r 'class T{private readonly $x = 42;} $obj = new T; var_dump($obj->x);' >> int(42) >> Or readable: >> > class Test { >> private readonly $x = 42; >> } >> $obj = new Test; >> var_dump($obj->x); ?>>> >> As we have the 'Property overloading RFC' on the 6.0 aganda >> we should probably move part of the stuff to 5.2 already and >> start with the public read access. >> http://oss.backendmedia.com/PhP60 >> http://www.zend.com/zend/week/week248.php#Heading3 >> Best regards, >> Marcus > Best regards, > Marcus Best regards, Marcus ------------7B18D4F3FFF01E9 Content-Type: text/plain; name="ze2-readonly_properties-20060514d.diff.txt" Content-transfer-encoding: base64 Content-Disposition: attachment; filename="ze2-readonly_properties-20060514d.diff.txt" SW5kZXg6IFplbmQvemVuZF9jb21waWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3Jl cG9zaXRvcnkvWmVuZEVuZ2luZTIvemVuZF9jb21waWxlLmgsdgpyZXRyaWV2aW5nIHJldmlz aW9uIDEuMzE2LjIuOC4yLjIKZGlmZiAtdSAtcCAtZCAtcjEuMzE2LjIuOC4yLjIgemVuZF9j b21waWxlLmgKLS0tIFplbmQvemVuZF9jb21waWxlLmgJMTEgTWF5IDIwMDYgMjE6MDc6Mzkg LTAwMDAJMS4zMTYuMi44LjIuMgorKysgWmVuZC96ZW5kX2NvbXBpbGUuaAkxNCBNYXkgMjAw NiAxOTo1ODoxMSAtMDAwMApAQCAtMTM5LDYgKzEzOSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBf emVuZF90cnlfY2F0Y2hfZWxlbWVudCB7CiAvKiBkZXByZWNhdGlvbiBmbGFnICovCiAjZGVm aW5lIFpFTkRfQUNDX0RFUFJFQ0FURUQgMHg0MDAwMAogCisvKiBwcm9wZXJ0eSBoYW5kbGlu ZyBjb250cm9sICovCisjZGVmaW5lIFpFTkRfQUNDX1JFQURfT05MWSAgMHgwODAwMDAKKyNk ZWZpbmUgWkVORF9BQ0NfUFVCX1JFQUQgICAweDEwMDAwMAorCiBjaGFyICp6ZW5kX3Zpc2li aWxpdHlfc3RyaW5nKHplbmRfdWludCBmbl9mbGFncyk7CiAKIApJbmRleDogWmVuZC96ZW5k X2xhbmd1YWdlX3BhcnNlci55Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5 L1plbmRFbmdpbmUyL3plbmRfbGFuZ3VhZ2VfcGFyc2VyLnksdgpyZXRyaWV2aW5nIHJldmlz aW9uIDEuMTYwLjIuNC4yLjEKZGlmZiAtdSAtcCAtZCAtcjEuMTYwLjIuNC4yLjEgemVuZF9s YW5ndWFnZV9wYXJzZXIueQotLS0gWmVuZC96ZW5kX2xhbmd1YWdlX3BhcnNlci55CTExIE1h eSAyMDA2IDIxOjA3OjM5IC0wMDAwCTEuMTYwLjIuNC4yLjEKKysrIFplbmQvemVuZF9sYW5n dWFnZV9wYXJzZXIueQkxNCBNYXkgMjAwNiAxOTo1ODoxMiAtMDAwMApAQCAtNTAwLDggKzUw MCw5IEBAIG1ldGhvZF9ib2R5OgogOwogCiB2YXJpYWJsZV9tb2RpZmllcnM6Ci0JCW5vbl9l bXB0eV9tZW1iZXJfbW9kaWZpZXJzCQl7ICQkID0gJDE7IH0KLQl8CVRfVkFSCQkJCQkJCXsg Wl9MVkFMKCQkLnUuY29uc3RhbnQpID0gWkVORF9BQ0NfUFVCTElDOyB9CisJCW5vbl9lbXB0 eV9tZW1iZXJfbW9kaWZpZXJzCQkJCXsgJCQgPSAkMTsgfQorCXwJbm9uX2VtcHR5X21lbWJl cl9tb2RpZmllcnMgJzonIFRfUFVCTElDCXsgJCQgPSAkMTsgWl9MVkFMKCQkLnUuY29uc3Rh bnQpIHw9IFpFTkRfQUNDX1BVQl9SRUFEOyB9CisJfAlUX1ZBUgkJCQkJCQkJCXsgWl9MVkFM KCQkLnUuY29uc3RhbnQpID0gWkVORF9BQ0NfUFVCTElDOyB9CiA7CiAKIG1ldGhvZF9tb2Rp ZmllcnM6CkluZGV4OiBaZW5kL3plbmRfb2JqZWN0X2hhbmRsZXJzLmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvWmVuZEVuZ2luZTIvemVuZF9vYmplY3RfaGFuZGxl cnMuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMzUuMi42LjIuMgpkaWZmIC11IC1wIC1k IC1yMS4xMzUuMi42LjIuMiB6ZW5kX29iamVjdF9oYW5kbGVycy5jCi0tLSBaZW5kL3plbmRf b2JqZWN0X2hhbmRsZXJzLmMJMTAgTWF5IDIwMDYgMjE6MTI6NDggLTAwMDAJMS4xMzUuMi42 LjIuMgorKysgWmVuZC96ZW5kX29iamVjdF9oYW5kbGVycy5jCTE0IE1heSAyMDA2IDE5OjU4 OjEyIC0wMDAwCkBAIC0xNDQsMjAgKzE0NCwyNiBAQCBzdGF0aWMgenZhbCAqemVuZF9zdGRf Y2FsbF9pc3NldHRlcih6dmFsCiAJcmV0dXJuIHJldHZhbDsKIH0KIAotc3RhdGljIGludCB6 ZW5kX3ZlcmlmeV9wcm9wZXJ0eV9hY2Nlc3MoemVuZF9wcm9wZXJ0eV9pbmZvICpwcm9wZXJ0 eV9pbmZvLCB6ZW5kX2NsYXNzX2VudHJ5ICpjZSBUU1JNTFNfREMpCitzdGF0aWMgaW50IHpl bmRfdmVyaWZ5X3Byb3BlcnR5X2FjY2Vzcyh6ZW5kX3Byb3BlcnR5X2luZm8gKnByb3BlcnR5 X2luZm8sIHplbmRfY2xhc3NfZW50cnkgKmNlLCBpbnQgcmVhZF93cml0ZSBUU1JNTFNfREMp CiB7CisJaWYgKCFyZWFkX3dyaXRlICYmIChwcm9wZXJ0eV9pbmZvLT5mbGFncyAmIFpFTkRf QUNDX1JFQURfT05MWSkpIHsKKwkJcmV0dXJuIDA7CisJfQogCXN3aXRjaCAocHJvcGVydHlf aW5mby0+ZmxhZ3MgJiBaRU5EX0FDQ19QUFBfTUFTSykgewogCQljYXNlIFpFTkRfQUNDX1BV QkxJQzoKIAkJCXJldHVybiAxOwogCQljYXNlIFpFTkRfQUNDX1BST1RFQ1RFRDoKLQkJCXJl dHVybiB6ZW5kX2NoZWNrX3Byb3RlY3RlZChjZSwgRUcoc2NvcGUpKTsKKwkJCWlmICgocHJv cGVydHlfaW5mby0+ZmxhZ3MgJiBaRU5EX0FDQ19QVUJfUkVBRCkgJiYgcmVhZF93cml0ZSkg eworCQkJCXJldHVybiAxOworCQkJfSBlbHNlIHsKKwkJCQlyZXR1cm4gemVuZF9jaGVja19w cm90ZWN0ZWQoY2UsIEVHKHNjb3BlKSk7CisJCQl9CiAJCWNhc2UgWkVORF9BQ0NfUFJJVkFU RToKLQkJCWlmIChjZT09RUcoc2NvcGUpICYmIEVHKHNjb3BlKSkgeworCQkJaWYgKChjZSA9 PSBFRyhzY29wZSkgJiYgY2UpIHx8ICgocHJvcGVydHlfaW5mby0+ZmxhZ3MgJiBaRU5EX0FD Q19QVUJfUkVBRCkgJiYgcmVhZF93cml0ZSkpIHsKIAkJCQlyZXR1cm4gMTsKIAkJCX0gZWxz ZSB7CiAJCQkJcmV0dXJuIDA7CiAJCQl9Ci0JCQlicmVhazsKIAl9CiAJcmV0dXJuIDA7CiB9 CkBAIC0xNzUsNyArMTgxLDcgQEAgc3RhdGljIGlubGluZSB6ZW5kX2Jvb2wgaXNfZGVyaXZl ZF9jbGFzcwogCXJldHVybiAwOwogfQogCi1aRU5EX0FQSSBzdHJ1Y3QgX3plbmRfcHJvcGVy dHlfaW5mbyAqemVuZF9nZXRfcHJvcGVydHlfaW5mbyh6ZW5kX2NsYXNzX2VudHJ5ICpjZSwg enZhbCAqbWVtYmVyLCBpbnQgc2lsZW50IFRTUk1MU19EQykKK1pFTkRfQVBJIHN0cnVjdCBf emVuZF9wcm9wZXJ0eV9pbmZvICp6ZW5kX2dldF9wcm9wZXJ0eV9pbmZvX2V4KHplbmRfY2xh c3NfZW50cnkgKmNlLCB6dmFsICptZW1iZXIsIGludCBzaWxlbnQsIGludCByZWFkX3dyaXRl IFRTUk1MU19EQykKIHsKIAl6ZW5kX3Byb3BlcnR5X2luZm8gKnByb3BlcnR5X2luZm8gPSBO VUxMOwogCXplbmRfcHJvcGVydHlfaW5mbyAqc2NvcGVfcHJvcGVydHlfaW5mbzsKQEAgLTE5 OCw3ICsyMDQsNyBAQCBaRU5EX0FQSSBzdHJ1Y3QgX3plbmRfcHJvcGVydHlfaW5mbyAqemVu CiAJCQkvKiBpZiBpdCdzIGEgc2hhZG93IC0gZ28gdG8gYWNjZXNzIGl0J3MgcHJpdmF0ZSAq LwogCQkJcHJvcGVydHlfaW5mbyA9IE5VTEw7CiAJCX0gZWxzZSB7Ci0JCQlpZiAoemVuZF92 ZXJpZnlfcHJvcGVydHlfYWNjZXNzKHByb3BlcnR5X2luZm8sIGNlIFRTUk1MU19DQykpIHsK KwkJCWlmICh6ZW5kX3ZlcmlmeV9wcm9wZXJ0eV9hY2Nlc3MocHJvcGVydHlfaW5mbywgY2Us IHJlYWRfd3JpdGUgVFNSTUxTX0NDKSkgewogCQkJCWlmIChwcm9wZXJ0eV9pbmZvLT5mbGFn cyAmIFpFTkRfQUNDX0NIQU5HRUQKIAkJCQkJJiYgIShwcm9wZXJ0eV9pbmZvLT5mbGFncyAm IFpFTkRfQUNDX1BSSVZBVEUpKSB7CiAJCQkJCS8qIFdlIHN0aWxsIG5lZWQgdG8gbWFrZSBz dXJlIHRoYXQgd2UncmUgbm90IGluIGEgY29udGV4dApAQCAtMjQ0LDYgKzI1MCwxMSBAQCBa RU5EX0FQSSBzdHJ1Y3QgX3plbmRfcHJvcGVydHlfaW5mbyAqemVuCiB9CiAKIAorWkVORF9B UEkgc3RydWN0IF96ZW5kX3Byb3BlcnR5X2luZm8gKnplbmRfZ2V0X3Byb3BlcnR5X2luZm8o emVuZF9jbGFzc19lbnRyeSAqY2UsIHp2YWwgKm1lbWJlciwgaW50IHNpbGVudCBUU1JNTFNf REMpCit7CisJcmV0dXJuIHplbmRfZ2V0X3Byb3BlcnR5X2luZm9fZXgoY2UsIG1lbWJlciwg c2lsZW50LCAwIFRTUk1MU19DQyk7Cit9CisKIFpFTkRfQVBJIGludCB6ZW5kX2NoZWNrX3By b3BlcnR5X2FjY2Vzcyh6ZW5kX29iamVjdCAqem9iaiwgY2hhciAqcHJvcF9pbmZvX25hbWUg VFNSTUxTX0RDKQogewogCXplbmRfcHJvcGVydHlfaW5mbyAqcHJvcGVydHlfaW5mbzsKQEAg LTI1Miw3ICsyNjMsNyBAQCBaRU5EX0FQSSBpbnQgemVuZF9jaGVja19wcm9wZXJ0eV9hY2Nl c3MoCiAKIAl6ZW5kX3VubWFuZ2xlX3Byb3BlcnR5X25hbWUocHJvcF9pbmZvX25hbWUsICZj bGFzc19uYW1lLCAmcHJvcF9uYW1lKTsKIAlaVkFMX1NUUklORygmbWVtYmVyLCBwcm9wX25h bWUsIDApOwotCXByb3BlcnR5X2luZm8gPSB6ZW5kX2dldF9wcm9wZXJ0eV9pbmZvKHpvYmot PmNlLCAmbWVtYmVyLCAxIFRTUk1MU19DQyk7CisJcHJvcGVydHlfaW5mbyA9IHplbmRfZ2V0 X3Byb3BlcnR5X2luZm9fZXgoem9iai0+Y2UsICZtZW1iZXIsIDEsIDAgVFNSTUxTX0NDKTsK IAlpZiAoIXByb3BlcnR5X2luZm8pIHsKIAkJcmV0dXJuIEZBSUxVUkU7CiAJfQpAQCAtMjY1 LDcgKzI3Niw3IEBAIFpFTkRfQVBJIGludCB6ZW5kX2NoZWNrX3Byb3BlcnR5X2FjY2VzcygK IAkJCXJldHVybiBGQUlMVVJFOwogCQl9CiAJfQotCXJldHVybiB6ZW5kX3ZlcmlmeV9wcm9w ZXJ0eV9hY2Nlc3MocHJvcGVydHlfaW5mbywgem9iai0+Y2UgVFNSTUxTX0NDKSA/IFNVQ0NF U1MgOiBGQUlMVVJFOworCXJldHVybiB6ZW5kX3ZlcmlmeV9wcm9wZXJ0eV9hY2Nlc3MocHJv cGVydHlfaW5mbywgem9iai0+Y2UsIDEgVFNSTUxTX0NDKSA/IFNVQ0NFU1MgOiBGQUlMVVJF OwogfQogCiBzdGF0aWMgaW50IHplbmRfZ2V0X3Byb3BlcnR5X2d1YXJkKHplbmRfb2JqZWN0 ICp6b2JqLCB6ZW5kX3Byb3BlcnR5X2luZm8gKnByb3BlcnR5X2luZm8sIHp2YWwgKm1lbWJl ciwgemVuZF9ndWFyZCAqKnBndWFyZCkKQEAgLTMxOCw3ICszMjksNyBAQCB6dmFsICp6ZW5k X3N0ZF9yZWFkX3Byb3BlcnR5KHp2YWwgKm9iamVjCiAjZW5kaWYJCQkKIAogCS8qIG1ha2Ug emVuZF9nZXRfcHJvcGVydHlfaW5mbyBzaWxlbnQgaWYgd2UgaGF2ZSBnZXR0ZXIgLSB3ZSBt YXkgd2FudCB0byB1c2UgaXQgKi8KLQlwcm9wZXJ0eV9pbmZvID0gemVuZF9nZXRfcHJvcGVy dHlfaW5mbyh6b2JqLT5jZSwgbWVtYmVyLCAoem9iai0+Y2UtPl9fZ2V0ICE9IE5VTEwpIFRT Uk1MU19DQyk7CisJcHJvcGVydHlfaW5mbyA9IHplbmRfZ2V0X3Byb3BlcnR5X2luZm9fZXgo em9iai0+Y2UsIG1lbWJlciwgKHpvYmotPmNlLT5fX2dldCAhPSBOVUxMKSwgMSBUU1JNTFNf Q0MpOwogCiAJaWYgKCFwcm9wZXJ0eV9pbmZvIHx8IHplbmRfaGFzaF9xdWlja19maW5kKHpv YmotPnByb3BlcnRpZXMsIHByb3BlcnR5X2luZm8tPm5hbWUsIHByb3BlcnR5X2luZm8tPm5h bWVfbGVuZ3RoKzEsIHByb3BlcnR5X2luZm8tPmgsICh2b2lkICoqKSAmcmV0dmFsKSA9PSBG QUlMVVJFKSB7CiAJCXplbmRfZ3VhcmQgKmd1YXJkOwpAQCAtMzcxLDcgKzM4Miw3IEBAIHN0 YXRpYyB2b2lkIHplbmRfc3RkX3dyaXRlX3Byb3BlcnR5KHp2YWwKIAkJbWVtYmVyID0gdG1w X21lbWJlcjsKIAl9CiAKLQlwcm9wZXJ0eV9pbmZvID0gemVuZF9nZXRfcHJvcGVydHlfaW5m byh6b2JqLT5jZSwgbWVtYmVyLCAoem9iai0+Y2UtPl9fc2V0ICE9IE5VTEwpIFRTUk1MU19D Qyk7CisJcHJvcGVydHlfaW5mbyA9IHplbmRfZ2V0X3Byb3BlcnR5X2luZm9fZXgoem9iai0+ Y2UsIG1lbWJlciwgKHpvYmotPmNlLT5fX3NldCAhPSBOVUxMKSwgMCBUU1JNTFNfQ0MpOwog CiAJaWYgKHByb3BlcnR5X2luZm8gJiYgemVuZF9oYXNoX3F1aWNrX2ZpbmQoem9iai0+cHJv cGVydGllcywgcHJvcGVydHlfaW5mby0+bmFtZSwgcHJvcGVydHlfaW5mby0+bmFtZV9sZW5n dGgrMSwgcHJvcGVydHlfaW5mby0+aCwgKHZvaWQgKiopICZ2YXJpYWJsZV9wdHIpID09IFNV Q0NFU1MpIHsKIAkJaWYgKCp2YXJpYWJsZV9wdHIgPT0gdmFsdWUpIHsKQEAgLTUyNiw3ICs1 MzcsNyBAQCBzdGF0aWMgenZhbCAqKnplbmRfc3RkX2dldF9wcm9wZXJ0eV9wdHJfCiAJZnBy aW50ZihzdGRlcnIsICJQdHIgb2JqZWN0ICMlZCBwcm9wZXJ0eTogJXNcbiIsIFpfT0JKX0hB TkRMRV9QKG9iamVjdCksIFpfU1RSVkFMX1AobWVtYmVyKSk7CiAjZW5kaWYKIAotCXByb3Bl cnR5X2luZm8gPSB6ZW5kX2dldF9wcm9wZXJ0eV9pbmZvKHpvYmotPmNlLCBtZW1iZXIsICh6 b2JqLT5jZS0+X19nZXQgIT0gTlVMTCkgVFNSTUxTX0NDKTsKKwlwcm9wZXJ0eV9pbmZvID0g emVuZF9nZXRfcHJvcGVydHlfaW5mb19leCh6b2JqLT5jZSwgbWVtYmVyLCAoem9iai0+Y2Ut Pl9fZ2V0ICE9IE5VTEwpLCAwIFRTUk1MU19DQyk7CiAKIAlpZiAoIXByb3BlcnR5X2luZm8g fHwgemVuZF9oYXNoX3F1aWNrX2ZpbmQoem9iai0+cHJvcGVydGllcywgcHJvcGVydHlfaW5m by0+bmFtZSwgcHJvcGVydHlfaW5mby0+bmFtZV9sZW5ndGgrMSwgcHJvcGVydHlfaW5mby0+ aCwgKHZvaWQgKiopICZyZXR2YWwpID09IEZBSUxVUkUpIHsKIAkJenZhbCAqbmV3X3p2YWw7 CkBAIC01NzAsNyArNTgxLDcgQEAgc3RhdGljIHZvaWQgemVuZF9zdGRfdW5zZXRfcHJvcGVy dHkoenZhbAogCQltZW1iZXIgPSB0bXBfbWVtYmVyOwogCX0KIAotCXByb3BlcnR5X2luZm8g PSB6ZW5kX2dldF9wcm9wZXJ0eV9pbmZvKHpvYmotPmNlLCBtZW1iZXIsICh6b2JqLT5jZS0+ X191bnNldCAhPSBOVUxMKSBUU1JNTFNfQ0MpOworCXByb3BlcnR5X2luZm8gPSB6ZW5kX2dl dF9wcm9wZXJ0eV9pbmZvX2V4KHpvYmotPmNlLCBtZW1iZXIsICh6b2JqLT5jZS0+X191bnNl dCAhPSBOVUxMKSwgMCBUU1JNTFNfQ0MpOwogCiAJaWYgKCFwcm9wZXJ0eV9pbmZvIHx8IHpl bmRfaGFzaF9kZWwoem9iai0+cHJvcGVydGllcywgcHJvcGVydHlfaW5mby0+bmFtZSwgcHJv cGVydHlfaW5mby0+bmFtZV9sZW5ndGgrMSkgPT0gRkFJTFVSRSkgewogCQl6ZW5kX2d1YXJk ICpndWFyZDsKQEAgLTg0OSw3ICs4NjAsNyBAQCBaRU5EX0FQSSB6dmFsICoqemVuZF9zdGRf Z2V0X3N0YXRpY19wcm9wCiAJemVuZF9wcmludGYoIkFjY2VzcyB0eXBlIGZvciAlczo6JXMg aXMgJXNcbiIsIGNlLT5uYW1lLCBwcm9wZXJ0eV9uYW1lLCB6ZW5kX3Zpc2liaWxpdHlfc3Ry aW5nKHByb3BlcnR5X2luZm8tPmZsYWdzKSk7CiAjZW5kaWYKIAotCWlmICghemVuZF92ZXJp ZnlfcHJvcGVydHlfYWNjZXNzKHByb3BlcnR5X2luZm8sIGNlIFRTUk1MU19DQykpIHsKKwlp ZiAoIXplbmRfdmVyaWZ5X3Byb3BlcnR5X2FjY2Vzcyhwcm9wZXJ0eV9pbmZvLCBjZSwgMSBU U1JNTFNfQ0MpKSB7CiAJCWlmICghc2lsZW50KSB7CiAJCQl6ZW5kX2Vycm9yKEVfRVJST1Is ICJDYW5ub3QgYWNjZXNzICVzIHByb3BlcnR5ICVzOjokJXMiLCB6ZW5kX3Zpc2liaWxpdHlf c3RyaW5nKHByb3BlcnR5X2luZm8tPmZsYWdzKSwgY2UtPm5hbWUsIHByb3BlcnR5X25hbWUp OwogCQl9CkBAIC05NDUsNyArOTU2LDcgQEAgc3RhdGljIGludCB6ZW5kX3N0ZF9oYXNfcHJv cGVydHkoenZhbCAqbwogCWZwcmludGYoc3RkZXJyLCAiUmVhZCBvYmplY3QgIyVkIHByb3Bl cnR5OiAlc1xuIiwgWl9PQkpfSEFORExFX1Aob2JqZWN0KSwgWl9TVFJWQUxfUChtZW1iZXIp KTsKICNlbmRpZgogCi0JcHJvcGVydHlfaW5mbyA9IHplbmRfZ2V0X3Byb3BlcnR5X2luZm8o em9iai0+Y2UsIG1lbWJlciwgMSBUU1JNTFNfQ0MpOworCXByb3BlcnR5X2luZm8gPSB6ZW5k X2dldF9wcm9wZXJ0eV9pbmZvX2V4KHpvYmotPmNlLCBtZW1iZXIsIDEsIDAgVFNSTUxTX0ND KTsKIAogCWlmICghcHJvcGVydHlfaW5mbyB8fCB6ZW5kX2hhc2hfcXVpY2tfZmluZCh6b2Jq LT5wcm9wZXJ0aWVzLCBwcm9wZXJ0eV9pbmZvLT5uYW1lLCBwcm9wZXJ0eV9pbmZvLT5uYW1l X2xlbmd0aCsxLCBwcm9wZXJ0eV9pbmZvLT5oLCAodm9pZCAqKikgJnZhbHVlKSA9PSBGQUlM VVJFKSB7CiAJCXplbmRfZ3VhcmQgKmd1YXJkOwpJbmRleDogWmVuZC96ZW5kX29iamVjdF9o YW5kbGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L1plbmRFbmdp bmUyL3plbmRfb2JqZWN0X2hhbmRsZXJzLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDcu Mi4yLjIuMQpkaWZmIC11IC1wIC1kIC1yMS40Ny4yLjIuMi4xIHplbmRfb2JqZWN0X2hhbmRs ZXJzLmgKLS0tIFplbmQvemVuZF9vYmplY3RfaGFuZGxlcnMuaAk5IE1heSAyMDA2IDIzOjUz OjIzIC0wMDAwCTEuNDcuMi4yLjIuMQorKysgWmVuZC96ZW5kX29iamVjdF9oYW5kbGVycy5o CTE0IE1heSAyMDA2IDE5OjU4OjEyIC0wMDAwCkBAIC0xNDAsNiArMTQwLDcgQEAgQkVHSU5f RVhURVJOX0MoKQogWkVORF9BUEkgdW5pb24gX3plbmRfZnVuY3Rpb24gKnplbmRfc3RkX2dl dF9zdGF0aWNfbWV0aG9kKHplbmRfY2xhc3NfZW50cnkgKmNlLCBjaGFyICpmdW5jdGlvbl9u YW1lX3N0cnZhbCwgaW50IGZ1bmN0aW9uX25hbWVfc3RybGVuIFRTUk1MU19EQyk7CiBaRU5E X0FQSSB6dmFsICoqemVuZF9zdGRfZ2V0X3N0YXRpY19wcm9wZXJ0eSh6ZW5kX2NsYXNzX2Vu dHJ5ICpjZSwgY2hhciAqcHJvcGVydHlfbmFtZSwgaW50IHByb3BlcnR5X25hbWVfbGVuLCB6 ZW5kX2Jvb2wgc2lsZW50IFRTUk1MU19EQyk7CiBaRU5EX0FQSSB6ZW5kX2Jvb2wgemVuZF9z dGRfdW5zZXRfc3RhdGljX3Byb3BlcnR5KHplbmRfY2xhc3NfZW50cnkgKmNlLCBjaGFyICpw cm9wZXJ0eV9uYW1lLCBpbnQgcHJvcGVydHlfbmFtZV9sZW4gVFNSTUxTX0RDKTsKK1pFTkRf QVBJIHN0cnVjdCBfemVuZF9wcm9wZXJ0eV9pbmZvICp6ZW5kX2dldF9wcm9wZXJ0eV9pbmZv X2V4KHplbmRfY2xhc3NfZW50cnkgKmNlLCB6dmFsICptZW1iZXIsIGludCBzaWxlbnQsIGlu dCByZWFkX3dyaXRlIFRTUk1MU19EQyk7CiBaRU5EX0FQSSBzdHJ1Y3QgX3plbmRfcHJvcGVy dHlfaW5mbyAqemVuZF9nZXRfcHJvcGVydHlfaW5mbyh6ZW5kX2NsYXNzX2VudHJ5ICpjZSwg enZhbCAqbWVtYmVyLCBpbnQgc2lsZW50IFRTUk1MU19EQyk7CiAKIFpFTkRfQVBJIGludCB6 ZW5kX3N0ZF9jYXN0X29iamVjdF90b3N0cmluZyh6dmFsICpyZWFkb2JqLCB6dmFsICp3cml0 ZW9iaiwgaW50IHR5cGUgVFNSTUxTX0RDKTsK ------------7B18D4F3FFF01E9--