Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:39777 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 94879 invoked from network); 8 Aug 2008 21:49:14 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 8 Aug 2008 21:49:14 -0000 Authentication-Results: pb1.pair.com smtp.mail=helly@php.net; spf=unknown; sender-id=unknown Authentication-Results: pb1.pair.com header.from=helly@php.net; sender-id=unknown Received-SPF: unknown (pb1.pair.com: domain php.net does not designate 85.214.94.56 as permitted sender) X-PHP-List-Original-Sender: helly@php.net X-Host-Fingerprint: 85.214.94.56 aixcept.net Linux 2.6 Received: from [85.214.94.56] ([85.214.94.56:43439] helo=h1149922.serverkompetenz.net) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 65/B9-46174-85FBC984 for ; Fri, 08 Aug 2008 17:49:13 -0400 Received: from MBOERGER-ZRH.corp.google.com (133-155.107-92.cust.bluewin.ch [92.107.155.133]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by h1149922.serverkompetenz.net (Postfix) with ESMTP id 07AD911EF83; Fri, 8 Aug 2008 23:49:08 +0200 (CEST) Date: Fri, 8 Aug 2008 23:48:37 +0200 Reply-To: Marcus Boerger X-Priority: 3 (Normal) Message-ID: <875726149.20080808234837@marcus-boerger.de> To: =?iso-8859-15?Q?Johannes_Schl=FCter?= , Christian Seiler CC: Dmitry Stogov , php-dev List In-Reply-To: <1217847553.4175.23.camel@goldfinger.johannes.nop> References: <48886651.80407@gmx.net> <4889F43D.8030609@gmx.net> <4896B0B4.2090801@zend.com> <1217847553.4175.23.camel@goldfinger.johannes.nop> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----------17EA245121B98D6" Subject: Re: [PHP-DEV] [PATCH] Closures and reflection improvements From: helly@php.net (Marcus Boerger) ------------17EA245121B98D6 Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: 8bit Hello Christian, I updated your patch for 5.3 due to recent changes. It works pretty fine for me. Care to test again, especially with your new tests? Note that test ext/reflection/tests/closures_001.phpt does not work for me and I have no clue why. Well, besides that obviously the closure class no longer has an entry for __closure, so it is more a question of how to know when to add this. Also, it appears you do not have a cvs account, or did I overlook something? Modified patch attached, including the updated reflection tests. Hello Johannes, I addressed the thing you spotted. best regards marcus Monday, August 4, 2008, 12:59:13 PM, you wrote: > Christian, > On Mon, 2008-08-04 at 11:33 +0400, Dmitry Stogov wrote: >> >> http://www.christian-seiler.de/temp/php/2008-07-24-reflection/reflection-closure-fixes-5.3.patch >> >> >> >> http://www.christian-seiler.de/temp/php/2008-07-24-reflection/reflection-closure-fixes-6.patch >> > > without applying and testing the patch: > - zend_hash_apply_with_arguments(&ce->function_table TSRMLS_CC, > (apply_func_args_t) _addmethod, 3, &ce, return_value, filter); > + zend_hash_apply_with_arguments(&ce->function_table TSRMLS_CC, > (apply_func_args_t) _addmethod, 3, &ce, return_value, filter, intern->obj); > that looks a bit strange, probably you want 4 instead of 3 now? > johannes Best regards, Marcus ------------17EA245121B98D6 Content-Type: text/plain; name="php-closure-reflection-5.3-20080808.diff.txt" Content-transfer-encoding: base64 Content-Disposition: attachment; filename="php-closure-reflection-5.3-20080808.diff.txt" SW5kZXg6IFplbmQvemVuZF9jbG9zdXJlcy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9y ZXBvc2l0b3J5L1plbmRFbmdpbmUyL3plbmRfY2xvc3VyZXMuYyx2CnJldHJpZXZpbmcgcmV2 aXNpb24gMS4zLjIuMTAKZGlmZiAtdSAtcCAtZCAtcjEuMy4yLjEwIHplbmRfY2xvc3VyZXMu YwotLS0gWmVuZC96ZW5kX2Nsb3N1cmVzLmMJNyBBdWcgMjAwOCAxMzozNTo1MSAtMDAwMAkx LjMuMi4xMAorKysgWmVuZC96ZW5kX2Nsb3N1cmVzLmMJOCBBdWcgMjAwOCAyMTozMzoxMSAt MDAwMApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgInplbmRfb2JqZWN0c19BUEkuaCIK ICNpbmNsdWRlICJ6ZW5kX2dsb2JhbHMuaCIKIAotI2RlZmluZSBaRU5EX0lOVk9LRV9GVU5D X05BTUUgIl9faW52b2tlIgogI2RlZmluZSBaRU5EX0NMT1NVUkVfUFJJTlRfTkFNRSAiQ2xv c3VyZSBvYmplY3QiCiAKICNkZWZpbmUgWkVORF9DTE9TVVJFX1BST1BFUlRZX0VSUk9SKCkg XApAQCAtMzgsNyArMzcsOCBAQCB0eXBlZGVmIHN0cnVjdCBfemVuZF9jbG9zdXJlIHsKIAl6 dmFsICAgICAgICAgICp0aGlzX3B0cjsKIH0gemVuZF9jbG9zdXJlOwogCi1zdGF0aWMgemVu ZF9jbGFzc19lbnRyeSAqemVuZF9jZV9jbG9zdXJlOworLyogbm9uLXN0YXRpYyBzaW5jZSBp dCBuZWVkcyB0byBiZSByZWZlcmVuY2VkICovCit6ZW5kX2NsYXNzX2VudHJ5ICp6ZW5kX2Nl X2Nsb3N1cmU7CiBzdGF0aWMgemVuZF9vYmplY3RfaGFuZGxlcnMgY2xvc3VyZV9oYW5kbGVy czsKIAogWkVORF9NRVRIT0QoQ2xvc3VyZSwgX19pbnZva2UpIC8qIHt7eyAqLwpAQCAtOTks NiArOTksMjQgQEAgc3RhdGljIGludCB6ZW5kX2Nsb3N1cmVfY29tcGFyZV9vYmplY3RzKAog fQogLyogfX19ICovCiAKK1pFTkRfQVBJIHplbmRfZnVuY3Rpb24gKnplbmRfZ2V0X2Nsb3N1 cmVfaW52b2tlX21ldGhvZCh6dmFsICpvYmogVFNSTUxTX0RDKSAvKiB7e3sgKi8KK3sKKwl6 ZW5kX2Nsb3N1cmUgKmNsb3N1cmUgPSAoemVuZF9jbG9zdXJlICopemVuZF9vYmplY3Rfc3Rv cmVfZ2V0X29iamVjdChvYmogVFNSTUxTX0NDKTsJCisJemVuZF9mdW5jdGlvbiAqaW52b2tl ID0gKHplbmRfZnVuY3Rpb24qKWVtYWxsb2Moc2l6ZW9mKHplbmRfZnVuY3Rpb24pKTsKKwor CWludm9rZSA9ICh6ZW5kX2Z1bmN0aW9uKillbWFsbG9jKHNpemVvZih6ZW5kX2Z1bmN0aW9u KSk7CisJaW52b2tlLT5jb21tb24gPSBjbG9zdXJlLT5mdW5jLmNvbW1vbjsKKwlpbnZva2Ut PnR5cGUgPSBaRU5EX0lOVEVSTkFMX0ZVTkNUSU9OOworCWludm9rZS0+aW50ZXJuYWxfZnVu Y3Rpb24uaGFuZGxlciA9IFpFTkRfTU4oQ2xvc3VyZV9fX2ludm9rZSk7CisJaW52b2tlLT5p bnRlcm5hbF9mdW5jdGlvbi5tb2R1bGUgPSAwOworCWludm9rZS0+aW50ZXJuYWxfZnVuY3Rp b24uc2NvcGUgPSB6ZW5kX2NlX2Nsb3N1cmU7CisJaW52b2tlLT5pbnRlcm5hbF9mdW5jdGlv bi5mdW5jdGlvbl9uYW1lID0gZXN0cm5kdXAoWkVORF9JTlZPS0VfRlVOQ19OQU1FLCBzaXpl b2YoWkVORF9JTlZPS0VfRlVOQ19OQU1FKS0xKTsKKwlpbnZva2UtPmludGVybmFsX2Z1bmN0 aW9uLmZuX2ZsYWdzID0gWkVORF9BQ0NfUFVCTElDIHwgWkVORF9BQ0NfQ0FMTF9WSUFfSEFO RExFUjsKKwlyZXR1cm4gaW52b2tlOworCQorfQorLyogfX19ICovCisKIHN0YXRpYyB6ZW5k X2Z1bmN0aW9uICp6ZW5kX2Nsb3N1cmVfZ2V0X21ldGhvZCh6dmFsICoqb2JqZWN0X3B0ciwg Y2hhciAqbWV0aG9kX25hbWUsIGludCBtZXRob2RfbGVuIFRTUk1MU19EQykgLyoge3t7ICov CiB7CiAJY2hhciAqbGNfbmFtZTsKQEAgLTEwOSwxOCArMTI3LDggQEAgc3RhdGljIHplbmRf ZnVuY3Rpb24gKnplbmRfY2xvc3VyZV9nZXRfbQogCWlmICgobWV0aG9kX2xlbiA9PSBzaXpl b2YoWkVORF9JTlZPS0VfRlVOQ19OQU1FKS0xKSAmJgogCQltZW1jbXAobGNfbmFtZSwgWkVO RF9JTlZPS0VfRlVOQ19OQU1FLCBzaXplb2YoWkVORF9JTlZPS0VfRlVOQ19OQU1FKS0xKSA9 PSAwCiAJKSB7Ci0JCXplbmRfY2xvc3VyZSAqY2xvc3VyZSA9ICh6ZW5kX2Nsb3N1cmUgKil6 ZW5kX29iamVjdF9zdG9yZV9nZXRfb2JqZWN0KCpvYmplY3RfcHRyIFRTUk1MU19DQyk7Ci0J CXplbmRfZnVuY3Rpb24gKmludm9rZSA9ICh6ZW5kX2Z1bmN0aW9uKillbWFsbG9jKHNpemVv Zih6ZW5kX2Z1bmN0aW9uKSk7Ci0KLQkJaW52b2tlLT5jb21tb24gPSBjbG9zdXJlLT5mdW5j LmNvbW1vbjsKLQkJaW52b2tlLT50eXBlID0gWkVORF9JTlRFUk5BTF9GVU5DVElPTjsKLQkJ aW52b2tlLT5pbnRlcm5hbF9mdW5jdGlvbi5mbl9mbGFncyA9IFpFTkRfQUNDX0NBTExfVklB X0hBTkRMRVI7Ci0JCWludm9rZS0+aW50ZXJuYWxfZnVuY3Rpb24uaGFuZGxlciA9IFpFTkRf TU4oQ2xvc3VyZV9fX2ludm9rZSk7Ci0JCWludm9rZS0+aW50ZXJuYWxfZnVuY3Rpb24ubW9k dWxlID0gMDsKLQkJaW52b2tlLT5pbnRlcm5hbF9mdW5jdGlvbi5zY29wZSA9IHplbmRfY2Vf Y2xvc3VyZTsKLQkJaW52b2tlLT5pbnRlcm5hbF9mdW5jdGlvbi5mdW5jdGlvbl9uYW1lID0g ZXN0cm5kdXAoWkVORF9JTlZPS0VfRlVOQ19OQU1FLCBzaXplb2YoWkVORF9JTlZPS0VfRlVO Q19OQU1FKS0xKTsKIAkJZnJlZV9hbGxvY2EobGNfbmFtZSwgdXNlX2hlYXApOwotCQlyZXR1 cm4gaW52b2tlOworCQlyZXR1cm4gemVuZF9nZXRfY2xvc3VyZV9pbnZva2VfbWV0aG9kKCpv YmplY3RfcHRyIFRTUk1MU19DQyk7CiAJfQogCWZyZWVfYWxsb2NhKGxjX25hbWUsIHVzZV9o ZWFwKTsKIAlyZXR1cm4gTlVMTDsKSW5kZXg6IFplbmQvemVuZF9jbG9zdXJlcy5oCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L1plbmRFbmdpbmUyL3plbmRfY2xvc3Vy ZXMuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjIuMgpkaWZmIC11IC1wIC1kIC1yMS4x LjIuMiB6ZW5kX2Nsb3N1cmVzLmgKLS0tIFplbmQvemVuZF9jbG9zdXJlcy5oCTE0IEp1bCAy MDA4IDA5OjQ4OjU5IC0wMDAwCTEuMS4yLjIKKysrIFplbmQvemVuZF9jbG9zdXJlcy5oCTgg QXVnIDIwMDggMjE6MzM6MTEgLTAwMDAKQEAgLTI0LDEwICsyNCwxNSBAQAogCiBCRUdJTl9F WFRFUk5fQygpCiAKKyNkZWZpbmUgWkVORF9JTlZPS0VfRlVOQ19OQU1FICJfX2ludm9rZSIK Kwogdm9pZCB6ZW5kX3JlZ2lzdGVyX2Nsb3N1cmVfY2UoVFNSTUxTX0QpOwogCitleHRlcm4g emVuZF9jbGFzc19lbnRyeSAqemVuZF9jZV9jbG9zdXJlOworCiBaRU5EX0FQSSB2b2lkIHpl bmRfY3JlYXRlX2Nsb3N1cmUoenZhbCAqcmVzLCB6ZW5kX2Z1bmN0aW9uICpvcF9hcnJheSwg emVuZF9jbGFzc19lbnRyeSAqc2NvcGUsIHp2YWwgKnRoaXNfcHRyIFRTUk1MU19EQyk7CiBa RU5EX0FQSSBpbnQgemVuZF9nZXRfY2xvc3VyZSh6dmFsICpvYmosIHplbmRfY2xhc3NfZW50 cnkgKipjZV9wdHIsIHplbmRfZnVuY3Rpb24gKipmcHRyX3B0ciwgenZhbCAqKnpvYmpfcHRy LCB6dmFsICoqKnpvYmpfcHRyX3B0ciBUU1JNTFNfREMpOworWkVORF9BUEkgemVuZF9mdW5j dGlvbiAqemVuZF9nZXRfY2xvc3VyZV9pbnZva2VfbWV0aG9kKHp2YWwgKm9iaiBUU1JNTFNf REMpOwogCiBFTkRfRVhURVJOX0MoKQogCkluZGV4OiBleHQvcmVmbGVjdGlvbi9waHBfcmVm bGVjdGlvbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L3BocC1zcmMv ZXh0L3JlZmxlY3Rpb24vcGhwX3JlZmxlY3Rpb24uYyx2CnJldHJpZXZpbmcgcmV2aXNpb24g MS4xNjQuMi4zMy4yLjQ1LjIuMjcKZGlmZiAtdSAtcCAtZCAtcjEuMTY0LjIuMzMuMi40NS4y LjI3IHBocF9yZWZsZWN0aW9uLmMKLS0tIGV4dC9yZWZsZWN0aW9uL3BocF9yZWZsZWN0aW9u LmMJOCBBdWcgMjAwOCAxMDo1Mjo0OCAtMDAwMAkxLjE2NC4yLjMzLjIuNDUuMi4yNworKysg ZXh0L3JlZmxlY3Rpb24vcGhwX3JlZmxlY3Rpb24uYwk4IEF1ZyAyMDA4IDIxOjMzOjEyIC0w MDAwCkBAIC01MzYsNiArNTM2LDE0IEBAIHN0YXRpYyB2b2lkIF9jbGFzc19zdHJpbmcoc3Ry aW5nICpzdHIsIHoKIAkJCQkJICAgIHplbmRfaGFzaF9nZXRfY3VycmVudF9rZXlfZXgoJmNl LT5mdW5jdGlvbl90YWJsZSwgJmtleSwgJmtleV9sZW4sICZudW1faW5kZXgsIDAsICZwb3Mp ICE9IEhBU0hfS0VZX0lTX1NUUklORyB8fAogCQkJCQkgICAgemVuZF9iaW5hcnlfc3RyY2Fz ZWNtcChrZXksIGtleV9sZW4tMSwgbXB0ci0+Y29tbW9uLmZ1bmN0aW9uX25hbWUsIGxlbikg PT0gMCkgewogCisJCQkJCQl6ZW5kX2Z1bmN0aW9uICpjbG9zdXJlX21wdHI7CisJCQkJCQkv KiBzZWUgaWYgdGhpcyBpcyBhIGNsb3N1cmUgKi8KKwkJCQkJCWlmIChjZSA9PSB6ZW5kX2Nl X2Nsb3N1cmUgJiYgb2JqICYmIChsZW4gPT0gc2l6ZW9mKFpFTkRfSU5WT0tFX0ZVTkNfTkFN RSktMSkgJiYKKwkJCQkJCQltZW1jbXAobXB0ci0+Y29tbW9uLmZ1bmN0aW9uX25hbWUsIFpF TkRfSU5WT0tFX0ZVTkNfTkFNRSwgc2l6ZW9mKFpFTkRfSU5WT0tFX0ZVTkNfTkFNRSktMSkg PT0gMCAmJgorCQkJCQkJCShjbG9zdXJlX21wdHIgPSB6ZW5kX2dldF9jbG9zdXJlX2ludm9r ZV9tZXRob2Qob2JqIFRTUk1MU19DQykpICE9IE5VTEwKKwkJCQkJCSkgeworCQkJCQkJCW1w dHIgPSBjbG9zdXJlX21wdHI7CisJCQkJCQl9CiAJCQkJCQlzdHJpbmdfcHJpbnRmKCZkeW4s ICJcbiIpOwogCQkJCQkJX2Z1bmN0aW9uX3N0cmluZygmZHluLCBtcHRyLCBjZSwgc3ViX2lu ZGVudC5zdHJpbmcgVFNSTUxTX0NDKTsKIAkJCQkJCWNvdW50Kys7CkBAIC0xODkwLDE1ICsx ODk4LDM0IEBAIFpFTkRfTUVUSE9EKHJlZmxlY3Rpb25fcGFyYW1ldGVyLCBfX2NvbnMKIAkJ CQljb252ZXJ0X3RvX3N0cmluZ19leChtZXRob2QpOwogCQkJCWxjbmFtZV9sZW4gPSBaX1NU UkxFTl9QUChtZXRob2QpOwogCQkJCWxjbmFtZSA9IHplbmRfc3RyX3RvbG93ZXJfZHVwKFpf U1RSVkFMX1BQKG1ldGhvZCksIGxjbmFtZV9sZW4pOwotCQkJCWlmICh6ZW5kX2hhc2hfZmlu ZCgmY2UtPmZ1bmN0aW9uX3RhYmxlLCBsY25hbWUsIGxjbmFtZV9sZW4gKyAxLCAodm9pZCAq KikgJmZwdHIpID09IEZBSUxVUkUpIHsKKwkJCQlpZiAoY2UgPT0gemVuZF9jZV9jbG9zdXJl ICYmIFpfVFlQRV9QUChjbGFzc3JlZikgPT0gSVNfT0JKRUNUICYmCisJCQkJCShsY25hbWVf bGVuID09IHNpemVvZihaRU5EX0lOVk9LRV9GVU5DX05BTUUpLTEpICYmCisJCQkJCW1lbWNt cChsY25hbWUsIFpFTkRfSU5WT0tFX0ZVTkNfTkFNRSwgc2l6ZW9mKFpFTkRfSU5WT0tFX0ZV TkNfTkFNRSktMSkgPT0gMCAmJgorCQkJCQkoZnB0ciA9IHplbmRfZ2V0X2Nsb3N1cmVfaW52 b2tlX21ldGhvZCgqY2xhc3NyZWYgVFNSTUxTX0NDKSkgIT0gTlVMTAorCQkJCSkgeworCQkJ CQkvKiBkbyBub3RoaW5nLCBmcHRyIGlzIGFscmVhZHkgc2V0ICovCisJCQkJfSBlbHNlIGlm ICh6ZW5kX2hhc2hfZmluZCgmY2UtPmZ1bmN0aW9uX3RhYmxlLCBsY25hbWUsIGxjbmFtZV9s ZW4gKyAxLCAodm9pZCAqKikgJmZwdHIpID09IEZBSUxVUkUpIHsKIAkJCQkJZWZyZWUobGNu YW1lKTsKIAkJCQkJemVuZF90aHJvd19leGNlcHRpb25fZXgocmVmbGVjdGlvbl9leGNlcHRp b25fcHRyLCAwIFRTUk1MU19DQywgCi0JCQkJCQkiTWV0aG9kICVzOjolcygpIGRvZXMgbm90 IGV4aXN0IiwgWl9TVFJWQUxfUFAoY2xhc3NyZWYpLCBaX1RZUEVfUFAobWV0aG9kKSwgWl9T VFJWQUxfUFAobWV0aG9kKSk7CisJCQkJCQkiTWV0aG9kICVzOjolcygpIGRvZXMgbm90IGV4 aXN0IiwgY2UtPm5hbWUsIFpfU1RSVkFMX1BQKG1ldGhvZCkpOwogCQkJCQlyZXR1cm47CiAJ CQkJfQogCQkJCWVmcmVlKGxjbmFtZSk7CiAJCQl9CiAJCQlicmVhazsKKwkJCisJCWNhc2Ug SVNfT0JKRUNUOiB7CisJCQkJY2UgPSBaX09CSkNFX1AocmVmZXJlbmNlKTsKKwkJCQkKKwkJ CQlpZiAoY2UgPT0gemVuZF9jZV9jbG9zdXJlICYmIChmcHRyID0gemVuZF9nZXRfY2xvc3Vy ZV9pbnZva2VfbWV0aG9kKHJlZmVyZW5jZSBUU1JNTFNfQ0MpKSAhPSBOVUxMKSB7CisJCQkJ CS8qIGRvIG5vdGhpbmcsIGZwdHIgaXMgYWxyZWFkeSBzZXQgKi8KKwkJCQl9IGVsc2UgaWYg KHplbmRfaGFzaF9maW5kKCZjZS0+ZnVuY3Rpb25fdGFibGUsIFpFTkRfSU5WT0tFX0ZVTkNf TkFNRSwgc2l6ZW9mKFpFTkRfSU5WT0tFX0ZVTkNfTkFNRSksICh2b2lkICoqKSZmcHRyKSA9 PSBGQUlMVVJFKSB7CisJCQkJCXplbmRfdGhyb3dfZXhjZXB0aW9uX2V4KHJlZmxlY3Rpb25f ZXhjZXB0aW9uX3B0ciwgMCBUU1JNTFNfQ0MsCisJCQkJCQkiTWV0aG9kICVzOjolcygpIGRv ZXMgbm90IGV4aXN0IiwgY2UtPm5hbWUsIFpFTkRfSU5WT0tFX0ZVTkNfTkFNRSk7CisJCQkJ CXJldHVybjsKKwkJCQl9CisJCQl9CisJCQlicmVhazsKIAkJCQogCQlkZWZhdWx0OgogCQkJ X0RPX1RIUk9XKCJUaGUgcGFyYW1ldGVyIGNsYXNzIGlzIGV4cGVjdGVkIHRvIGJlIGVpdGhl ciBhIHN0cmluZyBvciBhbiBhcnJheShjbGFzcywgbWV0aG9kKSIpOwpAQCAtMjIwNyw3ICsy MjM0LDcgQEAgWkVORF9NRVRIT0QocmVmbGVjdGlvbl9tZXRob2QsIGV4cG9ydCkKIFpFTkRf TUVUSE9EKHJlZmxlY3Rpb25fbWV0aG9kLCBfX2NvbnN0cnVjdCkKIHsKIAl6dmFsICpuYW1l LCAqY2xhc3NuYW1lOwotCXp2YWwgKm9iamVjdDsKKwl6dmFsICpvYmplY3QsICpvcmlnX29i ajsKIAlyZWZsZWN0aW9uX29iamVjdCAqaW50ZXJuOwogCWNoYXIgKmxjbmFtZTsKIAl6ZW5k X2NsYXNzX2VudHJ5ICoqcGNlOwpAQCAtMjIxNyw3ICsyMjQ0LDExIEBAIFpFTkRfTUVUSE9E KHJlZmxlY3Rpb25fbWV0aG9kLCBfX2NvbnN0cnUKIAlpbnQgbmFtZV9sZW4sIHRtcF9sZW47 CiAJenZhbCB6dG1wOwogCi0JaWYgKHplbmRfcGFyc2VfcGFyYW1ldGVyc19leChaRU5EX1BB UlNFX1BBUkFNU19RVUlFVCwgWkVORF9OVU1fQVJHUygpIFRTUk1MU19DQywgInpzIiwgJmNs YXNzbmFtZSwgJm5hbWVfc3RyLCAmbmFtZV9sZW4pID09IEZBSUxVUkUpIHsKKwlpZiAoemVu ZF9wYXJzZV9wYXJhbWV0ZXJzX2V4KFpFTkRfUEFSU0VfUEFSQU1TX1FVSUVULCBaRU5EX05V TV9BUkdTKCkgVFNSTUxTX0NDLCAibyIsICZjbGFzc25hbWUpID09IFNVQ0NFU1MpIHsKKwkJ bmFtZV9zdHIgPSBaRU5EX0lOVk9LRV9GVU5DX05BTUU7CisJCW5hbWVfbGVuID0gc2l6ZW9m KFpFTkRfSU5WT0tFX0ZVTkNfTkFNRSktMTsKKwkJb3JpZ19vYmogPSBjbGFzc25hbWU7CisJ fSBlbHNlIGlmICh6ZW5kX3BhcnNlX3BhcmFtZXRlcnNfZXgoWkVORF9QQVJTRV9QQVJBTVNf UVVJRVQsIFpFTkRfTlVNX0FSR1MoKSBUU1JNTFNfQ0MsICJ6cyIsICZjbGFzc25hbWUsICZu YW1lX3N0ciwgJm5hbWVfbGVuKSA9PSBGQUlMVVJFKSB7CiAJCWlmICh6ZW5kX3BhcnNlX3Bh cmFtZXRlcnMoWkVORF9OVU1fQVJHUygpIFRTUk1MU19DQywgInMiLCAmbmFtZV9zdHIsICZu YW1lX2xlbikgPT0gRkFJTFVSRSkgewogCQkJcmV0dXJuOwogCQl9CkBAIC0yMjMwLDYgKzIy NjEsMTEgQEAgWkVORF9NRVRIT0QocmVmbGVjdGlvbl9tZXRob2QsIF9fY29uc3RydQogCQla VkFMX1NUUklOR0woY2xhc3NuYW1lLCBuYW1lX3N0ciwgdG1wX2xlbiwgMSk7CiAJCW5hbWVf bGVuID0gbmFtZV9sZW4gLSAodG1wX2xlbiArIDIpOwogCQluYW1lX3N0ciA9IHRtcCArIDI7 CisJCW9yaWdfb2JqID0gTlVMTDsKKwl9IGVsc2UgaWYgKFpfVFlQRV9QKGNsYXNzbmFtZSkg PT0gSVNfT0JKRUNUKSB7CisJCW9yaWdfb2JqID0gY2xhc3NuYW1lOworCX0gZWxzZSB7CisJ CW9yaWdfb2JqID0gTlVMTDsKIAl9CiAKIAlvYmplY3QgPSBnZXRUaGlzKCk7CkBAIC0yMjc1 LDcgKzIzMTEsMTIgQEAgWkVORF9NRVRIT0QocmVmbGVjdGlvbl9tZXRob2QsIF9fY29uc3Ry dQogCQogCWxjbmFtZSA9IHplbmRfc3RyX3RvbG93ZXJfZHVwKG5hbWVfc3RyLCBuYW1lX2xl bik7CiAKLQlpZiAoemVuZF9oYXNoX2ZpbmQoJmNlLT5mdW5jdGlvbl90YWJsZSwgbGNuYW1l LCBuYW1lX2xlbiArIDEsICh2b2lkICoqKSAmbXB0cikgPT0gRkFJTFVSRSkgeworCWlmIChj ZSA9PSB6ZW5kX2NlX2Nsb3N1cmUgJiYgb3JpZ19vYmogJiYgKG5hbWVfbGVuID09IHNpemVv ZihaRU5EX0lOVk9LRV9GVU5DX05BTUUpLTEpICYmCisJCW1lbWNtcChsY25hbWUsIFpFTkRf SU5WT0tFX0ZVTkNfTkFNRSwgc2l6ZW9mKFpFTkRfSU5WT0tFX0ZVTkNfTkFNRSktMSkgPT0g MCAmJgorCQkobXB0ciA9IHplbmRfZ2V0X2Nsb3N1cmVfaW52b2tlX21ldGhvZChvcmlnX29i aiBUU1JNTFNfQ0MpKSAhPSBOVUxMCisJKSB7CisJCS8qIGRvIG5vdGhpbmcsIG1wdHIgYWxy ZWFkeSBzZXQgKi8KKwl9IGVsc2UgaWYgKHplbmRfaGFzaF9maW5kKCZjZS0+ZnVuY3Rpb25f dGFibGUsIGxjbmFtZSwgbmFtZV9sZW4gKyAxLCAodm9pZCAqKikgJm1wdHIpID09IEZBSUxV UkUpIHsKIAkJZWZyZWUobGNuYW1lKTsKIAkJemVuZF90aHJvd19leGNlcHRpb25fZXgocmVm bGVjdGlvbl9leGNlcHRpb25fcHRyLCAwIFRTUk1MU19DQywgCiAJCQkiTWV0aG9kICVzOjol cygpIGRvZXMgbm90IGV4aXN0IiwgY2UtPm5hbWUsIG5hbWVfc3RyKTsKQEAgLTMxMzksNyAr MzE4MCwxMyBAQCBaRU5EX01FVEhPRChyZWZsZWN0aW9uX2NsYXNzLCBnZXRNZXRob2QpCiAK IAlHRVRfUkVGTEVDVElPTl9PQkpFQ1RfUFRSKGNlKTsKIAlsY19uYW1lID0gemVuZF9zdHJf dG9sb3dlcl9kdXAobmFtZSwgbmFtZV9sZW4pOwotCWlmICh6ZW5kX2hhc2hfZmluZCgmY2Ut PmZ1bmN0aW9uX3RhYmxlLCBsY19uYW1lLCBuYW1lX2xlbiArIDEsICh2b2lkKiopICZtcHRy KSA9PSBTVUNDRVNTKSB7CisJaWYgKGNlID09IHplbmRfY2VfY2xvc3VyZSAmJiBpbnRlcm4t Pm9iaiAmJiAobmFtZV9sZW4gPT0gc2l6ZW9mKFpFTkRfSU5WT0tFX0ZVTkNfTkFNRSktMSkg JiYKKwkJbWVtY21wKGxjX25hbWUsIFpFTkRfSU5WT0tFX0ZVTkNfTkFNRSwgc2l6ZW9mKFpF TkRfSU5WT0tFX0ZVTkNfTkFNRSktMSkgPT0gMCAmJgorCQkobXB0ciA9IHplbmRfZ2V0X2Ns b3N1cmVfaW52b2tlX21ldGhvZChpbnRlcm4tPm9iaiBUU1JNTFNfQ0MpKSAhPSBOVUxMCisJ KSB7CisJCXJlZmxlY3Rpb25fbWV0aG9kX2ZhY3RvcnkoY2UsIG1wdHIsIHJldHVybl92YWx1 ZSBUU1JNTFNfQ0MpOworCQllZnJlZShsY19uYW1lKTsKKwl9IGVsc2UgaWYgKHplbmRfaGFz aF9maW5kKCZjZS0+ZnVuY3Rpb25fdGFibGUsIGxjX25hbWUsIG5hbWVfbGVuICsgMSwgKHZv aWQqKikgJm1wdHIpID09IFNVQ0NFU1MpIHsKIAkJcmVmbGVjdGlvbl9tZXRob2RfZmFjdG9y eShjZSwgbXB0ciwgcmV0dXJuX3ZhbHVlIFRTUk1MU19DQyk7CiAJCWVmcmVlKGxjX25hbWUp OwogCX0gZWxzZSB7CkBAIC0zMTU4LDkgKzMyMDUsMTggQEAgc3RhdGljIGludCBfYWRkbWV0 aG9kKHplbmRfZnVuY3Rpb24gKm1wdAogCXplbmRfY2xhc3NfZW50cnkgKmNlID0gKnZhX2Fy ZyhhcmdzLCB6ZW5kX2NsYXNzX2VudHJ5KiopOwogCXp2YWwgKnJldHZhbCA9IHZhX2FyZyhh cmdzLCB6dmFsKik7CiAJbG9uZyBmaWx0ZXIgPSB2YV9hcmcoYXJncywgbG9uZyk7CisJenZh bCAqb2JqID0gdmFfYXJnKGFyZ3MsIHp2YWwgKik7CisJdWludCBsZW4gPSBzdHJsZW4obXB0 ci0+Y29tbW9uLmZ1bmN0aW9uX25hbWUpOworCXplbmRfZnVuY3Rpb24gKmNsb3N1cmVfbXB0 cjsKIAogCWlmIChtcHRyLT5jb21tb24uZm5fZmxhZ3MgJiBmaWx0ZXIpIHsKIAkJQUxMT0Nf WlZBTChtZXRob2QpOworCQlpZiAoY2UgPT0gemVuZF9jZV9jbG9zdXJlICYmIG9iaiAmJiAo bGVuID09IHNpemVvZihaRU5EX0lOVk9LRV9GVU5DX05BTUUpLTEpICYmCisJCQltZW1jbXAo bXB0ci0+Y29tbW9uLmZ1bmN0aW9uX25hbWUsIFpFTkRfSU5WT0tFX0ZVTkNfTkFNRSwgc2l6 ZW9mKFpFTkRfSU5WT0tFX0ZVTkNfTkFNRSktMSkgPT0gMCAmJgorCQkJKGNsb3N1cmVfbXB0 ciA9IHplbmRfZ2V0X2Nsb3N1cmVfaW52b2tlX21ldGhvZChvYmogVFNSTUxTX0NDKSkgIT0g TlVMTAorCQkpIHsKKwkJCW1wdHIgPSBjbG9zdXJlX21wdHI7CisJCX0KIAkJcmVmbGVjdGlv bl9tZXRob2RfZmFjdG9yeShjZSwgbXB0ciwgbWV0aG9kIFRTUk1MU19DQyk7CiAJCWFkZF9u ZXh0X2luZGV4X3p2YWwocmV0dmFsLCBtZXRob2QpOwogCX0KQEAgLTMxOTAsNyArMzI0Niw3 IEBAIFpFTkRfTUVUSE9EKHJlZmxlY3Rpb25fY2xhc3MsIGdldE1ldGhvZHMKIAlHRVRfUkVG TEVDVElPTl9PQkpFQ1RfUFRSKGNlKTsKIAogCWFycmF5X2luaXQocmV0dXJuX3ZhbHVlKTsK LQl6ZW5kX2hhc2hfYXBwbHlfd2l0aF9hcmd1bWVudHMoJmNlLT5mdW5jdGlvbl90YWJsZSBU U1JNTFNfQ0MsIChhcHBseV9mdW5jX2FyZ3NfdCkgX2FkZG1ldGhvZCwgMywgJmNlLCByZXR1 cm5fdmFsdWUsIGZpbHRlcik7CisJemVuZF9oYXNoX2FwcGx5X3dpdGhfYXJndW1lbnRzKCZj ZS0+ZnVuY3Rpb25fdGFibGUgVFNSTUxTX0NDLCAoYXBwbHlfZnVuY19hcmdzX3QpIF9hZGRt ZXRob2QsIDQsICZjZSwgcmV0dXJuX3ZhbHVlLCBmaWx0ZXIsIGludGVybi0+b2JqKTsKIH0K IC8qIH19fSAqLwogCkluZGV4OiBleHQvcmVmbGVjdGlvbi90ZXN0cy9jbG9zdXJlc18wMDEu cGhwdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBleHQvcmVmbGVjdGlvbi90ZXN0cy9jbG9z dXJlc18wMDEucGhwdApkaWZmIC1OIGV4dC9yZWZsZWN0aW9uL3Rlc3RzL2Nsb3N1cmVzXzAw MS5waHB0Ci0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgZXh0 L3JlZmxlY3Rpb24vdGVzdHMvY2xvc3VyZXNfMDAxLnBocHQJOCBBdWcgMjAwOCAyMTozMzox MiAtMDAwMApAQCAtMCwwICsxLDcwIEBACistLVRFU1QtLQorUmVmbGVjdGlvbiBvbiBjbG9z dXJlcworLS1GSUxFLS0gCis8P3BocAorCiskY2xvc3VyZSA9IGZ1bmN0aW9uICgkYSwgJGIg PSAwKSB7IH07CisKKyRybyA9IG5ldyBSZWZsZWN0aW9uT2JqZWN0ICgkY2xvc3VyZSk7Cisk cm0gPSAkcm8tPmdldE1ldGhvZCAoJ19faW52b2tlJyk7Cit2YXJfZHVtcCAoJHJtLT5nZXRO dW1iZXJPZlBhcmFtZXRlcnMoKSk7Cit2YXJfZHVtcCAoJHJtLT5nZXROdW1iZXJPZlJlcXVp cmVkUGFyYW1ldGVycygpKTsKKyRybXMgPSAkcm8tPmdldE1ldGhvZHMoKTsKK2ZvcmVhY2gg KCRybXMgYXMgJHJtKSB7CisJaWYgKCRybS0+Z2V0TmFtZSAoKSA9PSAnX19pbnZva2UnKSB7 CisJCXZhcl9kdW1wICgkcm0tPmdldE51bWJlck9mUGFyYW1ldGVycygpKTsKKwkJdmFyX2R1 bXAgKCRybS0+Z2V0TnVtYmVyT2ZSZXF1aXJlZFBhcmFtZXRlcnMoKSk7CisJfQorfQorCitl Y2hvICItLS1cbiI7CisKKyRybSA9IG5ldyBSZWZsZWN0aW9uTWV0aG9kICgkY2xvc3VyZSk7 Cit2YXJfZHVtcCAoJHJtLT5nZXROYW1lICgpKTsKK3Zhcl9kdW1wICgkcm0tPmdldE51bWJl ck9mUGFyYW1ldGVycygpKTsKK3Zhcl9kdW1wICgkcm0tPmdldE51bWJlck9mUmVxdWlyZWRQ YXJhbWV0ZXJzKCkpOworCitlY2hvICItLS1cbiI7CisKKyRycCA9IG5ldyBSZWZsZWN0aW9u UGFyYW1ldGVyIChhcnJheSAoJGNsb3N1cmUsICdfX2ludm9rZScpLCAwKTsKK3Zhcl9kdW1w ICgkcnAtPmlzT3B0aW9uYWwgKCkpOworJHJwID0gbmV3IFJlZmxlY3Rpb25QYXJhbWV0ZXIg KGFycmF5ICgkY2xvc3VyZSwgJ19faW52b2tlJyksIDEpOwordmFyX2R1bXAgKCRycC0+aXNP cHRpb25hbCAoKSk7CiskcnAgPSBuZXcgUmVmbGVjdGlvblBhcmFtZXRlciAoYXJyYXkgKCRj bG9zdXJlLCAnX19pbnZva2UnKSwgJ2EnKTsKK3Zhcl9kdW1wICgkcnAtPmlzT3B0aW9uYWwg KCkpOworJHJwID0gbmV3IFJlZmxlY3Rpb25QYXJhbWV0ZXIgKGFycmF5ICgkY2xvc3VyZSwg J19faW52b2tlJyksICdiJyk7Cit2YXJfZHVtcCAoJHJwLT5pc09wdGlvbmFsICgpKTsKKwor ZWNobyAiLS0tXG4iOworCiskcnAgPSBuZXcgUmVmbGVjdGlvblBhcmFtZXRlciAoJGNsb3N1 cmUsIDApOwordmFyX2R1bXAgKCRycC0+aXNPcHRpb25hbCAoKSk7CiskcnAgPSBuZXcgUmVm bGVjdGlvblBhcmFtZXRlciAoJGNsb3N1cmUsIDEpOwordmFyX2R1bXAgKCRycC0+aXNPcHRp b25hbCAoKSk7CiskcnAgPSBuZXcgUmVmbGVjdGlvblBhcmFtZXRlciAoJGNsb3N1cmUsICdh Jyk7Cit2YXJfZHVtcCAoJHJwLT5pc09wdGlvbmFsICgpKTsKKyRycCA9IG5ldyBSZWZsZWN0 aW9uUGFyYW1ldGVyICgkY2xvc3VyZSwgJ2InKTsKK3Zhcl9kdW1wICgkcnAtPmlzT3B0aW9u YWwgKCkpOworCis/PgorPT09RE9ORT09PQorLS1FWFBFQ1RGLS0KK2ludCgyKQoraW50KDEp CitpbnQoMikKK2ludCgxKQorLS0tCitzdHJpbmcoOCkgIl9faW52b2tlIgoraW50KDIpCitp bnQoMSkKKy0tLQorYm9vbChmYWxzZSkKK2Jvb2wodHJ1ZSkKK2Jvb2woZmFsc2UpCitib29s KHRydWUpCistLS0KK2Jvb2woZmFsc2UpCitib29sKHRydWUpCitib29sKGZhbHNlKQorYm9v bCh0cnVlKQorPT09RE9ORT09PQpJbmRleDogZXh0L3JlZmxlY3Rpb24vdGVzdHMvY2xvc3Vy ZXNfMDAyLnBocHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogZXh0L3JlZmxlY3Rpb24vdGVz dHMvY2xvc3VyZXNfMDAyLnBocHQKZGlmZiAtTiBleHQvcmVmbGVjdGlvbi90ZXN0cy9jbG9z dXJlc18wMDIucGhwdAotLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAK KysrIGV4dC9yZWZsZWN0aW9uL3Rlc3RzL2Nsb3N1cmVzXzAwMi5waHB0CTggQXVnIDIwMDgg MjE6MzM6MTIgLTAwMDAKQEAgLTAsMCArMSwyNSBAQAorLS1URVNULS0KK1JlZmxlY3Rpb24g b24gaW52b2thYmxlIG9iamVjdHMKKy0tRklMRS0tIAorPD9waHAKKworJHJtID0gbmV3IFJl ZmxlY3Rpb25NZXRob2QgKG5ldyBDKTsKK3Zhcl9kdW1wICgkcm0tPmdldE5hbWUgKCkpOwor dmFyX2R1bXAgKCRybS0+Z2V0TnVtYmVyT2ZQYXJhbWV0ZXJzKCkpOwordmFyX2R1bXAgKCRy bS0+Z2V0TnVtYmVyT2ZSZXF1aXJlZFBhcmFtZXRlcnMoKSk7CisKKyRycCA9IG5ldyBSZWZs ZWN0aW9uUGFyYW1ldGVyIChuZXcgQywgMCk7Cit2YXJfZHVtcCAoJHJwLT5pc09wdGlvbmFs ICgpKTsKKworY2xhc3MgQyB7CisJZnVuY3Rpb24gX19pbnZva2UgKCRhKSB7IH0KK30KKwor Pz4KKz09PURPTkU9PT0KKy0tRVhQRUNURi0tCitzdHJpbmcoOCkgIl9faW52b2tlIgoraW50 KDEpCitpbnQoMSkKK2Jvb2woZmFsc2UpCis9PT1ET05FPT09Cg== ------------17EA245121B98D6--