![]() |
|
|
|
|
1
15th August 23:13
External User
Posts: 1
|
------------7F156BABA1CEF3
Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hello internals, Andrei asked me whether we could do something about the double lowercasing when calling zend_is_callable_check_func(). The attached patch adds the new fetch flag ZEND_FETCH_CLASS_NO_NORMALIZE which prevent lowercasing. Also zend_u_lookup_class_ex() got a new parameter which allows to specify whether the function needs to lowercase or not. I am quite sure Andrei needs to touch it a bit further but i think we should discuss this step first. Best regards, Marcus ------------7F156BABA1CEF3 Content-Type: text/plain; name="ze2-fetch-class-flags-20060715.diff.txt" Content-transfer-encoding: base64 Content-Disposition: attachment; filename="ze2-fetch-class-flags-20060715.diff.txt" PyBaZW5kL3Rlc3RzL2NhdGNoXzAwNS5waHB0CkluZGV4OiBaZW 5kL3plbmRfQVBJLmMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT 09PT09PT09PT09PT09PT09 PT09PT09PT09PQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvWmVuZE VuZ2luZTIvemVuZF9BUEku Yyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zNzgKZGlmZiAtdS AtcCAtZCAtcjEuMzc4IHpl bmRfQVBJLmMKLS0tIFplbmQvemVuZF9BUEkuYwkxMyBKdWwgMj AwNiAyMToyNzo0OCAtMDAw MAkxLjM3OAorKysgWmVuZC96ZW5kX0FQSS5jCTE1IEp1bCAyMD A2IDE5OjQ5OjI4IC0wMDAw CkBAIC0yNTgxLDcgKzI1ODEsNiBAQCBzdGF0aWMgaW50IHplbm RfaXNfY2FsbGFibGVfY2hl Y2tfZnVuYyhpCiAJenN0ciBsY25hbWUsIGxtbmFtZSwgbW5hbW UsIGNvbG9uOwogCXVuc2ln bmVkIGludCBjbGVuLCBtbGVuOwogCXplbmRfZnVuY3Rpb24gKm ZwdHI7Ci0JemVuZF9jbGFz c19lbnRyeSAqKnBjZTsKIAlIYXNoVGFibGUgKmZ0YWJsZTsKIA ogCSpjZV9wdHIgPSBOVUxM OwpAQCAtMjYwMywxNSArMjYwMiw3IEBAIHN0YXRpYyBpbnQgem VuZF9pc19jYWxsYWJsZV9j aGVja19mdW5jKGkKIAlpZiAoY29sb24udiAhPSBOVUxMKSB7Ci AJCWxjbmFtZSA9IHplbmRf dV9zdHJfY2FzZV9mb2xkKFpfVFlQRV9QKGNhbGxhYmxlKSwgWl 9VTklWQUxfUChjYWxsYWJs ZSksIGNsZW4sIDAsICZjbGVuKTsKIAkJLyogY2F1dGlvbjogbG NuYW1lIGlzIG5vdCAnXDAn IHRlcm1pbmF0ZWQgKi8KLQkJaWYgKGNsZW4gPT0gc2l6ZW9mKC JzZWxmIikgLSAxICYmCi0J CSAgICBaRU5EX1VfRVFVQUwoWl9UWVBFX1AoY2FsbGFibGUpLC BsY25hbWUsIGNsZW4sICJz ZWxmIiwgc2l6ZW9mKCJzZWxmIiktMSkpIHsKLQkJCSpjZV9wdH IgPSBFRyhzY29wZSk7Ci0J CX0gZWxzZSBpZiAoY2xlbiA9PSBzaXplb2YoInBhcmVudCIpIC 0gMSAmJgotCQkgICAgWkVO RF9VX0VRVUFMKFpfVFlQRV9QKGNhbGxhYmxlKSwgbGNuYW1lLC BjbGVuLCAicGFyZW50Iiwg c2l6ZW9mKCJwYXJlbnQiKS0xKSkgewotCQkJKmNlX3B0ciA9IE VHKHNjb3BlKSA/IEVHKHNj b3BlKS0+cGFyZW50IDogTlVMTDsKLQkJfSBlbHNlIGlmICh6ZW 5kX3VfbG9va3VwX2NsYXNz KFpfVFlQRV9QKGNhbGxhYmxlKSwgWl9VTklWQUxfUChjYWxsYW JsZSksIGNsZW4sICZwY2Ug VFNSTUxTX0NDKSA9PSBTVUNDRVNTKSB7Ci0JCQkqY2VfcHRyID 0gKnBjZTsKLQkJfQorCQkq Y2VfcHRyID0gemVuZF91X2ZldGNoX2NsYXNzKFpfVFlQRV9QKG NhbGxhYmxlKSwgbGNuYW1l LCBjbGVuLCBaRU5EX0ZFVENIX0NMQVNTX0FVVE98WkVORF9GRV RDSF9DTEFTU19OT19OT1JN QUxJWkUgVFNSTUxTX0NDKTsKIAkJZWZyZWUobGNuYW1lLnYpOw ogCQlpZiAoISpjZV9wdHIp IHsKIAkJCXJldHVybiAwOwpJbmRleDogWmVuZC96ZW5kX2J1aW x0aW5fZnVuY3Rpb25zLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT 09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvWm VuZEVuZ2luZTIvemVuZF9i dWlsdGluX2Z1bmN0aW9ucy5jLHYKcmV0cmlldmluZyByZXZpc2 lvbiAxLjMxOApkaWZmIC11 IC1wIC1kIC1yMS4zMTggemVuZF9idWlsdGluX2Z1bmN0aW9ucy 5jCi0tLSBaZW5kL3plbmRf YnVpbHRpbl9mdW5jdGlvbnMuYwkxNSBKdWwgMjAwNiAxOToxNj oxOSAtMDAwMAkxLjMxOAor KysgWmVuZC96ZW5kX2J1aWx0aW5fZnVuY3Rpb25zLmMJMTUgSn VsIDIwMDYgMTk6NDk6Mjkg LTAwMDAKQEAgLTcwMiw3ICs3MDIsNyBAQCBzdGF0aWMgdm9pZC Bpc19hX2ltcGwoSU5URVJO QUxfRlVOQ1RJT05fCiAKIAljb252ZXJ0X3RvX3RleHRfZXgoY2 xhc3NfbmFtZSk7CiAKLQlp ZiAoemVuZF91X2xvb2t1cF9jbGFzc19leChaX1RZUEVfUFAoY2 xhc3NfbmFtZSksIFpfVU5J VkFMX1BQKGNsYXNzX25hbWUpLCBaX1VOSUxFTl9QUChjbGFzc1 9uYW1lKSwgKGluc3RhbmNl X2NlICE9IE5VTEwpID8gMSA6IDAsICZjZSBUU1JNTFNfQ0MpID 09IEZBSUxVUkUpIHsKKwlp ZiAoemVuZF91X2xvb2t1cF9jbGFzc19leChaX1RZUEVfUFAoY2 xhc3NfbmFtZSksIFpfVU5J VkFMX1BQKGNsYXNzX25hbWUpLCBaX1VOSUxFTl9QUChjbGFzc1 9uYW1lKSwgKGluc3RhbmNl X2NlICE9IE5VTEwpID8gMSA6IDAsIDEsICZjZSBUU1JNTFNfQ0 MpID09IEZBSUxVUkUpIHsK IAkJcmV0dmFsID0gMDsKIAl9IGVsc2UgewogCQlpZiAob25seV 9zdWJjbGFzcykgewpJbmRl eDogWmVuZC96ZW5kX2NvbXBpbGUuaAo9PT09PT09PT09PT09PT 09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cl JDUyBmaWxlOiAvcmVwb3Np dG9yeS9aZW5kRW5naW5lMi96ZW5kX2NvbXBpbGUuaCx2CnJldH JpZXZpbmcgcmV2aXNpb24g MS4zNDMKZGlmZiAtdSAtcCAtZCAtcjEuMzQzIHplbmRfY29tcG lsZS5oCi0tLSBaZW5kL3pl bmRfY29tcGlsZS5oCTEzIEp1biAyMDA2IDEyOjU2OjIwIC0wMD AwCTEuMzQzCisrKyBaZW5k L3plbmRfY29tcGlsZS5oCTE1IEp1bCAyMDA2IDE5OjQ5OjMxIC 0wMDAwCkBAIC02MTUsNyAr NjE1LDkgQEAgaW50IHplbmRsZXgoem5vZGUgKnplbmRsdmFsIF RTUk1MU19EQyk7CiAjZGVm aW5lIFpFTkRfRkVUQ0hfQ0xBU1NfR0xPQkFMCQk0CiAjZGVmaW 5lIFpFTkRfRkVUQ0hfQ0xB U1NfQVVUTwkJNQogI2RlZmluZSBaRU5EX0ZFVENIX0NMQVNTX0 lOVEVSRkFDRQk2Ci0jZGVm aW5lIFpFTkRfRkVUQ0hfQ0xBU1NfTk9fQVVUT0xPQUQgMHg4MA orI2RlZmluZSBaRU5EX0ZF VENIX0NMQVNTX0ZMQUdTICAgICAgICAweEYwCisjZGVmaW5lIF pFTkRfRkVUQ0hfQ0xBU1Nf Tk9fTk9STUFMSVpFIDB4MTAKKyNkZWZpbmUgWkVORF9GRVRDSF 9DTEFTU19OT19BVVRPTE9B RCAgMHg4MAogCiAvKiB2YXJpYWJsZSBwYXJzaW5nIHR5cGUgKG NvbXBpbGUtdGltZSkgKi8K ICNkZWZpbmUgWkVORF9QQVJTRURfTUVNQkVSCQkJCSgxPDwwKQ pJbmRleDogWmVuZC96ZW5k X2V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT 09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvcm Vwb3NpdG9yeS9aZW5kRW5n aW5lMi96ZW5kX2V4ZWN1dGUuaCx2CnJldHJpZXZpbmcgcmV2aX Npb24gMS4xMDAKZGlmZiAt dSAtcCAtZCAtcjEuMTAwIHplbmRfZXhlY3V0ZS5oCi0tLSBaZW 5kL3plbmRfZXhlY3V0ZS5o CTMxIE1heSAyMDA2IDEzOjAyOjE1IC0wMDAwCTEuMTAwCisrKy BaZW5kL3plbmRfZXhlY3V0 ZS5oCTE1IEp1bCAyMDA2IDE5OjQ5OjMxIC0wMDAwCkBAIC03MS w3ICs3MSw3IEBAIHN0YXRp YyBpbmxpbmUgdm9pZCBzYWZlX2ZyZWVfenZhbF9wdHJfcmUKIH 0KIFpFTkRfQVBJIGludCB6 ZW5kX2xvb2t1cF9jbGFzcyhjaGFyICpuYW1lLCBpbnQgbmFtZV 9sZW5ndGgsIHplbmRfY2xh c3NfZW50cnkgKioqY2UgVFNSTUxTX0RDKTsKIFpFTkRfQVBJIG ludCB6ZW5kX3VfbG9va3Vw X2NsYXNzKHplbmRfdWNoYXIgdHlwZSwgenN0ciBuYW1lLCBpbn QgbmFtZV9sZW5ndGgsIHpl bmRfY2xhc3NfZW50cnkgKioqY2UgVFNSTUxTX0RDKTsKLVpFTk RfQVBJIGludCB6ZW5kX3Vf bG9va3VwX2NsYXNzX2V4KHplbmRfdWNoYXIgdHlwZSwgenN0ci BuYW1lLCBpbnQgbmFtZV9s ZW5ndGgsIGludCB1c2VfYXV0b2xvYWQsIHplbmRfY2xhc3NfZW 50cnkgKioqY2UgVFNSTUxT X0RDKTsKK1pFTkRfQVBJIGludCB6ZW5kX3VfbG9va3VwX2NsYX NzX2V4KHplbmRfdWNoYXIg dHlwZSwgenN0ciBuYW1lLCBpbnQgbmFtZV9sZW5ndGgsIGludC B1c2VfYXV0b2xvYWQsIGlu dCBkb19ub3JtYWxpemUsIHplbmRfY2xhc3NfZW50cnkgKioqY2 UgVFNSTUxTX0RDKTsKIFpF TkRfQVBJIGludCB6ZW5kX2V2YWxfc3RyaW5nKGNoYXIgKnN0ci wgenZhbCAqcmV0dmFsX3B0 ciwgY2hhciAqc3RyaW5nX25hbWUgVFNSTUxTX0RDKTsKIFpFTk RfQVBJIGludCB6ZW5kX2V2 YWxfc3RyaW5nX2V4KGNoYXIgKnN0ciwgenZhbCAqcmV0dmFsX3 B0ciwgY2hhciAqc3RyaW5n X25hbWUsIGludCBoYW5kbGVfZXhjZXB0aW9ucyBUU1JNTFNfRE MpOwogWkVORF9BUEkgaW50 IHplbmRfdV9ldmFsX3N0cmluZyh6ZW5kX3VjaGFyIHR5cGUsIH pzdHIgc3RyLCB6dmFsICpy ZXR2YWxfcHRyLCBjaGFyICpzdHJpbmdfbmFtZSBUU1JNTFNfRE MpOwpJbmRleDogWmVuZC96 ZW5kX2V4ZWN1dGVfQVBJLmMKPT09PT09PT09PT09PT09PT09PT 09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZm lsZTogL3JlcG9zaXRvcnkv WmVuZEVuZ2luZTIvemVuZF9leGVjdXRlX0FQSS5jLHYKcmV0cm lldmluZyByZXZpc2lvbiAx LjM3NQpkaWZmIC11IC1wIC1kIC1yMS4zNzUgemVuZF9leGVjdX RlX0FQSS5jCi0tLSBaZW5k L3plbmRfZXhlY3V0ZV9BUEkuYwkxMiBKdWwgMjAwNiAwNzo1ND oxOCAtMDAwMAkxLjM3NQor KysgWmVuZC96ZW5kX2V4ZWN1dGVfQVBJLmMJMTUgSnVsIDIwMD YgMTk6NDk6MzEgLTAwMDAK QEAgLTEwNjIsNyArMTA2Miw3IEBAIGludCB6ZW5kX2NhbGxfZn VuY3Rpb24oemVuZF9mY2Fs bF9pbmZvICoKIH0KIAogCi1aRU5EX0FQSSBpbnQgemVuZF91X2 xvb2t1cF9jbGFzc19leCh6 ZW5kX3VjaGFyIHR5cGUsIHpzdHIgbmFtZSwgaW50IG5hbWVfbG VuZ3RoLCBpbnQgdXNlX2F1 dG9sb2FkLCB6ZW5kX2NsYXNzX2VudHJ5ICoqKmNlIFRTUk1MU1 9EQykKK1pFTkRfQVBJIGlu dCB6ZW5kX3VfbG9va3VwX2NsYXNzX2V4KHplbmRfdWNoYXIgdH lwZSwgenN0ciBuYW1lLCBp bnQgbmFtZV9sZW5ndGgsIGludCB1c2VfYXV0b2xvYWQsIGludC Bkb19ub3JtYWxpemUsIHpl bmRfY2xhc3NfZW50cnkgKioqY2UgVFNSTUxTX0RDKQogewogCX p2YWwgKiphcmdzWzFdOwog CXp2YWwgYXV0b2xvYWRfZnVuY3Rpb247CkBAIC0xMDgwLDEwIC sxMDgwLDE2IEBAIFpFTkRf QVBJIGludCB6ZW5kX3VfbG9va3VwX2NsYXNzX2V4KHplbmQKIA kJcmV0dXJuIEZBSUxVUkU7 CiAJfQogCi0JbGNfbmFtZSA9IHplbmRfdV9zdHJfY2FzZV9mb2 xkKHR5cGUsIG5hbWUsIG5h bWVfbGVuZ3RoLCAxLCAmbGNfbmFtZV9sZW4pOworCWlmIChkb1 9ub3JtYWxpemUpIHsKKwkJ bGNfbmFtZSA9IHplbmRfdV9zdHJfY2FzZV9mb2xkKHR5cGUsIG 5hbWUsIG5hbWVfbGVuZ3Ro LCAxLCAmbGNfbmFtZV9sZW4pOworCX0gZWxzZSB7CisJCWxjX2 5hbWUgPSBuYW1lOworCX0K IAogCWlmICh6ZW5kX3VfaGFzaF9maW5kKEVHKGNsYXNzX3RhYm xlKSwgdHlwZSwgbGNfbmFt ZSwgbGNfbmFtZV9sZW4rMSwgKHZvaWQgKiopIGNlKSA9PSBTVU NDRVNTKSB7Ci0JCWVmcmVl KGxjX25hbWUudik7CisJCWlmIChkb19ub3JtYWxpemUpIHsKKw kJCWVmcmVlKGxjX25hbWUu dik7CisJCX0KIAkJcmV0dXJuIFNVQ0NFU1M7CiAJfQogCkBAIC 0xMDkxLDcgKzEwOTcsOSBA QCBaRU5EX0FQSSBpbnQgemVuZF91X2xvb2t1cF9jbGFzc19leC h6ZW5kCiAJICogKGRvZXNu J3QgaW1wYWN0IGZ1Y3Rpb25hbGl0eSBvZiBfX2F1dG9sb2FkKC kKIAkqLwogCWlmICghdXNl X2F1dG9sb2FkIHx8IHplbmRfaXNfY29tcGlsaW5nKFRTUk1MU1 9DKSkgewotCQllZnJlZShs Y19uYW1lLnYpOworCQlpZiAoZG9fbm9ybWFsaXplKSB7CisJCQ llZnJlZShsY19uYW1lLnYp OworCQl9CiAJCXJldHVybiBGQUlMVVJFOwogCX0KIApAQCAtMT EwMSw3ICsxMTA5LDkgQEAg WkVORF9BUEkgaW50IHplbmRfdV9sb29rdXBfY2xhc3NfZXgoem VuZAogCX0KIAogCWlmICh6 ZW5kX3VfaGFzaF9hZGQoRUcoaW5fYXV0b2xvYWQpLCB0eXBlLC BsY19uYW1lLCBsY19uYW1l X2xlbisxLCAodm9pZCoqKSZkdW1teSwgc2l6ZW9mKGNoYXIpLC BOVUxMKSA9PSBGQUlMVVJF KSB7Ci0JCWVmcmVlKGxjX25hbWUudik7CisJCWlmIChkb19ub3 JtYWxpemUpIHsKKwkJCWVm cmVlKGxjX25hbWUudik7CisJCX0KIAkJcmV0dXJuIEZBSUxVUk U7CiAJfQogCkBAIC0xMTQz LDEyICsxMTUzLDE2IEBAIFpFTkRfQVBJIGludCB6ZW5kX3VfbG 9va3VwX2NsYXNzX2V4KHpl bmQKIAogCWlmIChyZXR2YWwgPT0gRkFJTFVSRSkgewogCQlFRy hleGNlcHRpb24pID0gZXhj ZXB0aW9uOwotCQllZnJlZShsY19uYW1lLnYpOworCQlpZiAoZG 9fbm9ybWFsaXplKSB7CisJ CQllZnJlZShsY19uYW1lLnYpOworCQl9CiAJCXJldHVybiBGQU lMVVJFOwogCX0KIAogCWlm IChFRyhleGNlcHRpb24pICYmIGV4Y2VwdGlvbikgewotCQllZn JlZShsY19uYW1lLnYpOwor CQlpZiAoZG9fbm9ybWFsaXplKSB7CisJCQllZnJlZShsY19uYW 1lLnYpOworCQl9CiAJCXpl bmRfZXJyb3IoRV9FUlJPUiwgIkZ1bmN0aW9uICVzKCVSKSB0aH JldyBhbiBleGNlcHRpb24g b2YgdHlwZSAnJXYnIiwgWkVORF9BVVRPTE9BRF9GVU5DX05BTU UsIHR5cGUsIG5hbWUsIFpf T0JKQ0VfUChFRyhleGNlcHRpb24pKS0+bmFtZSk7CiAJCXJldH VybiBGQUlMVVJFOwogCX0K QEAgLTExNjAsMTMgKzExNzQsMTUgQEAgWkVORF9BUEkgaW50IH plbmRfdV9sb29rdXBfY2xh c3NfZXgoemVuZAogCX0KIAogCXJldHZhbCA9IHplbmRfdV9oYX NoX2ZpbmQoRUcoY2xhc3Nf dGFibGUpLCB0eXBlLCBsY19uYW1lLCBsY19uYW1lX2xlbiArID EsICh2b2lkICoqKSBjZSk7 Ci0JZWZyZWUobGNfbmFtZS52KTsKKwlpZiAoZG9fbm9ybWFsaX plKSB7CisJCWVmcmVlKGxj X25hbWUudik7CisJfQogCXJldHVybiByZXR2YWw7CiB9CiAKIF pFTkRfQVBJIGludCB6ZW5k X3VfbG9va3VwX2NsYXNzKHplbmRfdWNoYXIgdHlwZSwgenN0ci BuYW1lLCBpbnQgbmFtZV9s ZW5ndGgsIHplbmRfY2xhc3NfZW50cnkgKioqY2UgVFNSTUxTX0 RDKQogewotCXJldHVybiB6 ZW5kX3VfbG9va3VwX2NsYXNzX2V4KHR5cGUsIG5hbWUsIG5hbW VfbGVuZ3RoLCAxLCBjZSBU U1JNTFNfQ0MpOworCXJldHVybiB6ZW5kX3VfbG9va3VwX2NsYX NzX2V4KHR5cGUsIG5hbWUs IG5hbWVfbGVuZ3RoLCAxLCAxLCBjZSBUU1JNTFNfQ0MpOwogfQ ogCiBaRU5EX0FQSSBpbnQg emVuZF9sb29rdXBfY2xhc3MoY2hhciAqbmFtZSwgaW50IG5hbW VfbGVuZ3RoLCB6ZW5kX2Ns YXNzX2VudHJ5ICoqKmNlIFRTUk1MU19EQykKQEAgLTE1NDUsOS ArMTU2MSwxMiBAQCB2b2lk IHplbmRfdW5zZXRfdGltZW91dChUU1JNTFNfRCkKIFpFTkRfQV BJIHplbmRfY2xhc3NfZW50 cnkgKnplbmRfdV9mZXRjaF9jbGFzcyh6ZW5kX3VjaGFyIHR5cG UsIHpzdHIgY2xhc3NfbmFt ZSwgdWludCBjbGFzc19uYW1lX2xlbiwgaW50IGZldGNoX3R5cG UgVFNSTUxTX0RDKQogewog CXplbmRfY2xhc3NfZW50cnkgKipwY2U7Ci0JaW50IHVzZV9hdX RvbG9hZCA9IChmZXRjaF90 eXBlICYgWkVORF9GRVRDSF9DTEFTU19OT19BVVRPTE9BRCkgPT 0gMDsKKwlpbnQgdXNlX2F1 dG9sb2FkID0gKGZldGNoX3R5cGUgJiBaRU5EX0ZFVENIX0NMQV NTX05PX0FVVE9MT0FEKSAg PyAwIDogMTsKKwlpbnQgZG9fbm9ybWFsaXplID0gKGZldGNoX3 R5cGUgJiBaRU5EX0ZFVENI X0NMQVNTX05PX05PUk1BTElaRSkgPyAwIDogMTsKKwl6c3RyIG xjbmFtZTsKKworCWZldGNo X3R5cGUgPSBmZXRjaF90eXBlICYgflpFTkRfRkVUQ0hfQ0xBU1 NfRkxBR1M7CiAKLQlmZXRj aF90eXBlID0gZmV0Y2hfdHlwZSAmIH5aRU5EX0ZFVENIX0NMQV NTX05PX0FVVE9MT0FEOwog Y2hlY2tfZmV0Y2hfdHlwZToKIAlzd2l0Y2ggKGZldGNoX3R5cG UpIHsKIAkJY2FzZSBaRU5E X0ZFVENIX0NMQVNTX1NFTEY6CkBAIC0xNTY0LDE1ICsxNTgzLD I0IEBAIGNoZWNrX2ZldGNo X3R5cGU6CiAJCQl9CiAJCQlyZXR1cm4gRUcoc2NvcGUpLT5wYX JlbnQ7CiAJCWNhc2UgWkVO RF9GRVRDSF9DTEFTU19BVVRPOiB7Ci0JCQkJZmV0Y2hfdHlwZS A9IHplbmRfZ2V0X2NsYXNz X2ZldGNoX3R5cGUodHlwZSwgY2xhc3NfbmFtZSwgY2xhc3Nfbm FtZV9sZW4pOworCQkJCWlm IChkb19ub3JtYWxpemUpIHsKKwkJCQkJbGNuYW1lID0gemVuZF 91X3N0cl9jYXNlX2ZvbGQo dHlwZSwgY2xhc3NfbmFtZSwgY2xhc3NfbmFtZV9sZW4sIDAsIC ZjbGFzc19uYW1lX2xlbik7 CisJCQkJCWRvX25vcm1hbGl6ZSA9IDA7CisJCQkJfSBlbHNlIH sKKwkJCQkJbGNuYW1lID0g Y2xhc3NfbmFtZTsKKwkJCQl9CisJCQkJZmV0Y2hfdHlwZSA9IH plbmRfZ2V0X2NsYXNzX2Zl dGNoX3R5cGUodHlwZSwgbGNuYW1lLCBjbGFzc19uYW1lX2xlbi k7CiAJCQkJaWYgKGZldGNo X3R5cGUhPVpFTkRfRkVUQ0hfQ0xBU1NfREVGQVVMVCkgeworCQ kJCQlpZiAoZG9fbm9ybWFs aXplKSB7CisJCQkJCQllZnJlZShsY25hbWUudik7CisJCQkJCX 0KIAkJCQkJZ290byBjaGVj a19mZXRjaF90eXBlOwogCQkJCX0KIAkJCX0KIAkJCWJyZWFrOw ogCX0KIAotCWlmICh6ZW5k X3VfbG9va3VwX2NsYXNzX2V4KHR5cGUsIGNsYXNzX25hbWUsIG NsYXNzX25hbWVfbGVuLCB1 c2VfYXV0b2xvYWQsICZwY2UgVFNSTUxTX0NDKT09RkFJTFVSRS kgeworCWlmICh6ZW5kX3Vf bG9va3VwX2NsYXNzX2V4KHR5cGUsIGNsYXNzX25hbWUsIGNsYX NzX25hbWVfbGVuLCB1c2Vf YXV0b2xvYWQsIGRvX25vcm1hbGl6ZSwgJnBjZSBUU1JNTFNfQ0 MpPT1GQUlMVVJFKSB7CiAJ CWlmICh1c2VfYXV0b2xvYWQpIHsKIAkJCWlmIChmZXRjaF90eX BlID09IFpFTkRfRkVUQ0hf Q0xBU1NfSU5URVJGQUNFKSB7CiAJCQkJemVuZF9lcnJvcihFX0 VSUk9SLCAiSW50ZXJmYWNl ICclUicgbm90IGZvdW5kIiwgdHlwZSwgY2xhc3NfbmFtZSk7Ck luZGV4OiBleHQvcmVmbGVj dGlvbi9waHBfcmVmbGVjdGlvbi5jCj09PT09PT09PT09PT09PT 09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUk NTIGZpbGU6IC9yZXBvc2l0 b3J5L3BocC1zcmMvZXh0L3JlZmxlY3Rpb24vcGhwX3JlZmxlY3 Rpb24uYyx2CnJldHJpZXZp bmcgcmV2aXNpb24gMS4yNDMKZGlmZiAtdSAtcCAtZCAtcjEuMj QzIHBocF9yZWZsZWN0aW9u LmMKLS0tIGV4dC9yZWZsZWN0aW9uL3BocF9yZWZsZWN0aW9uLm MJMTMgSnVsIDIwMDYgMTI6 MzQ6MzAgLTAwMDAJMS4yNDMKKysrIGV4dC9yZWZsZWN0aW9uL3 BocF9yZWZsZWN0aW9uLmMJ MTUgSnVsIDIwMDYgMTk6NDk6MzkgLTAwMDAKQEAgLTE5NzIsNy ArMTk3Miw3IEBAIFpFTkRf TUVUSE9EKHJlZmxlY3Rpb25fcGFyYW1ldGVyLCBnZXRDbGEKIA lHRVRfUkVGTEVDVElPTl9P QkpFQ1RfUFRSKHBhcmFtKTsKIAogCWlmIChwYXJhbS0+YXJnX2 luZm8tPmNsYXNzX25hbWUu dikgewotCQlpZiAoemVuZF91X2xvb2t1cF9jbGFzc19leChVRy h1bmljb2RlKT9JU19VTklD T0RFOklTX1NUUklORywgcGFyYW0tPmFyZ19pbmZvLT5jbGFzc1 9uYW1lLCBwYXJhbS0+YXJn X2luZm8tPmNsYXNzX25hbWVfbGVuLCAxLCAmcGNlIFRTUk1MU1 9DQykgPT0gRkFJTFVSRSkg eworCQlpZiAoemVuZF91X2xvb2t1cF9jbGFzc19leChVRyh1bm ljb2RlKT9JU19VTklDT0RF OklTX1NUUklORywgcGFyYW0tPmFyZ19pbmZvLT5jbGFzc19uYW 1lLCBwYXJhbS0+YXJnX2lu Zm8tPmNsYXNzX25hbWVfbGVuLCAxLCAxLCAmcGNlIFRTUk1MU1 9DQykgPT0gRkFJTFVSRSkg ewogCQkJemVuZF90aHJvd19leGNlcHRpb25fZXgocmVmbGVjdG lvbl9leGNlcHRpb25fcHRy LCAwIFRTUk1MU19DQywgCiAJCQkJIkNsYXNzICV2IGRvZXMgbm 90IGV4aXN0IiwgcGFyYW0t PmFyZ19pbmZvLT5jbGFzc19uYW1lKTsKIAkJCXJldHVybjsK ------------7F156BABA1CEF3 Content-Type: text/plain; charset=us-ascii -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php ------------7F156BABA1CEF3-- |
|
|
|
|
2
16th August 05:10
External User
Posts: 1
|
I fixed some bugs and reworked the patch. Please look it over, as I
intend to commit it in the next couple of days. The next step would be fixing zend_u_str_case_fold() to do only case folding and having all normalization go through zend_normalize_identifier(). -Andrei -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php |
|
|
3
16th August 05:10
External User
Posts: 1
|
--Apple-Mail-1-912469410
Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Of course it would help if I attached the patch.. -Andrei --Apple-Mail-1-912469410 Content-Transfer-Encoding: 7bit Content-Type: text/plain; x-unix-mode=0644; name="ze2-fetch-class-flags-20060717.diff.txt" Content-Disposition: attachment; filename=ze2-fetch-class-flags-20060717.diff.txt Index: Zend/zend_API.c ================================================== ================= RCS file: /repository/ZendEngine2/zend_API.c,v retrieving revision 1.378 diff -p -u -r1.378 zend_API.c --- Zend/zend_API.c 13 Jul 2006 21:27:48 -0000 1.378 +++ Zend/zend_API.c 17 Jul 2006 19:47:30 -0000 @@ -2578,10 +2578,9 @@ ZEND_API int zend_disable_class(char *cl static int zend_is_callable_check_func(int check_flags, zval ***zobj_ptr_ptr, zend_class_entry *ce_org, zval *callable, zend_class_entry **ce_ptr, zend_function **fptr_ptr TSRMLS_DC) { int retval; - zstr lcname, lmname, mname, colon; + zstr lmname, mname, colon; unsigned int clen, mlen; zend_function *fptr; - zend_class_entry **pce; HashTable *ftable; *ce_ptr = NULL; @@ -2601,18 +2600,7 @@ static int zend_is_callable_check_func(i } } if (colon.v != NULL) { - lcname = zend_u_str_case_fold(Z_TYPE_P(callable), Z_UNIVAL_P(callable), clen, 0, &clen); - /* caution: lcname is not '\0' terminated */ - if (clen == sizeof("self") - 1 && - ZEND_U_EQUAL(Z_TYPE_P(callable), lcname, clen, "self", sizeof("self")-1)) { - *ce_ptr = EG(scope); - } else if (clen == sizeof("parent") - 1 && - ZEND_U_EQUAL(Z_TYPE_P(callable), lcname, clen, "parent", sizeof("parent")-1)) { - *ce_ptr = EG(scope) ? EG(scope)->parent : NULL; - } else if (zend_u_lookup_class(Z_TYPE_P(callable), Z_UNIVAL_P(callable), clen, &pce TSRMLS_CC) == SUCCESS) { - *ce_ptr = *pce; - } - efree(lcname.v); + *ce_ptr = zend_u_fetch_class(Z_TYPE_P(callable), Z_UNIVAL_P(callable), clen, ZEND_FETCH_CLASS_AUTO TSRMLS_CC); if (!*ce_ptr) { return 0; } @@ -2620,9 +2608,9 @@ static int zend_is_callable_check_func(i if (ce_org && !instanceof_function(ce_org, *ce_ptr TSRMLS_CC)) { return 0; } - lmname = zend_u_str_case_fold(Z_TYPE_P(callable), mname, mlen, 0, &mlen); + lmname = zend_u_str_case_fold(Z_TYPE_P(callable), mname, mlen, 1, &mlen); } else { - lmname = zend_u_str_case_fold(Z_TYPE_P(callable), Z_UNIVAL_P(callable), Z_UNILEN_P(callable), 0, &mlen); + lmname = zend_u_str_case_fold(Z_TYPE_P(callable), Z_UNIVAL_P(callable), Z_UNILEN_P(callable), 1, &mlen); if (ce_org) { ftable = &ce_org->function_table; *ce_ptr = ce_org; Index: Zend/zend_builtin_functions.c ================================================== ================= RCS file: /repository/ZendEngine2/zend_builtin_functions.c,v retrieving revision 1.317 diff -p -u -r1.317 zend_builtin_functions.c --- Zend/zend_builtin_functions.c 9 Jul 2006 22:40:10 -0000 1.317 +++ Zend/zend_builtin_functions.c 17 Jul 2006 19:47:30 -0000 @@ -702,7 +702,7 @@ static void is_a_impl(INTERNAL_FUNCTION_ convert_to_text_ex(class_name); - if (zend_u_lookup_class_ex(Z_TYPE_PP(class_name), Z_UNIVAL_PP(class_name), Z_UNILEN_PP(class_name), (instance_ce != NULL), &ce TSRMLS_CC) == FAILURE) { + if (zend_u_lookup_class_ex(Z_TYPE_PP(class_name), Z_UNIVAL_PP(class_name), Z_UNILEN_PP(class_name), (instance_ce != NULL) ? 1 : 0, 1, &ce TSRMLS_CC) == FAILURE) { retval = 0; } else { if (only_subclass) { Index: Zend/zend_compile.h ================================================== ================= RCS file: /repository/ZendEngine2/zend_compile.h,v retrieving revision 1.343 diff -p -u -r1.343 zend_compile.h --- Zend/zend_compile.h 13 Jun 2006 12:56:20 -0000 1.343 +++ Zend/zend_compile.h 17 Jul 2006 19:47:30 -0000 @@ -615,7 +615,9 @@ int zendlex(znode *zendlval TSRMLS_DC); #define ZEND_FETCH_CLASS_GLOBAL 4 #define ZEND_FETCH_CLASS_AUTO 5 #define ZEND_FETCH_CLASS_INTERFACE 6 -#define ZEND_FETCH_CLASS_NO_AUTOLOAD 0x80 +#define ZEND_FETCH_CLASS_FLAGS 0xF0 +#define ZEND_FETCH_CLASS_NO_NORMALIZE 0x10 +#define ZEND_FETCH_CLASS_NO_AUTOLOAD 0x80 /* variable parsing type (compile-time) */ #define ZEND_PARSED_MEMBER (1<<0) Index: Zend/zend_execute.c ================================================== ================= RCS file: /repository/ZendEngine2/zend_execute.c,v retrieving revision 1.748 diff -p -u -r1.748 zend_execute.c --- Zend/zend_execute.c 10 Jul 2006 00:32:23 -0000 1.748 +++ Zend/zend_execute.c 17 Jul 2006 19:47:30 -0000 @@ -944,7 +944,7 @@ fetch_string_dim: UChar *norm; int norm_len; - if (!zend_normalize_identifier(&norm, &norm_len, offset_key.u, offset_key_length, 0)) { + if (zend_normalize_identifier(&norm, &norm_len, offset_key.u, offset_key_length, 0) == FAILURE) { zend_error(E_WARNING, "Could not normalize identifier: %r", offset_key); } else if (norm != offset_key.u) { offset_key.u = norm; Index: Zend/zend_execute.h ================================================== ================= RCS file: /repository/ZendEngine2/zend_execute.h,v retrieving revision 1.100 diff -p -u -r1.100 zend_execute.h --- Zend/zend_execute.h 31 May 2006 13:02:15 -0000 1.100 +++ Zend/zend_execute.h 17 Jul 2006 19:47:30 -0000 @@ -71,7 +71,7 @@ static inline void safe_free_zval_ptr_re } ZEND_API int zend_lookup_class(char *name, int name_length, zend_class_entry ***ce TSRMLS_DC); ZEND_API int zend_u_lookup_class(zend_uchar type, zstr name, int name_length, zend_class_entry ***ce TSRMLS_DC); -ZEND_API int zend_u_lookup_class_ex(zend_uchar type, zstr name, int name_length, int use_autoload, zend_class_entry ***ce TSRMLS_DC); +ZEND_API int zend_u_lookup_class_ex(zend_uchar type, zstr name, int name_length, int use_autoload, int do_normalize, zend_class_entry ***ce TSRMLS_DC); ZEND_API int zend_eval_string(char *str, zval *retval_ptr, char *string_name TSRMLS_DC); ZEND_API int zend_eval_string_ex(char *str, zval *retval_ptr, char *string_name, int handle_exceptions TSRMLS_DC); ZEND_API int zend_u_eval_string(zend_uchar type, zstr str, zval *retval_ptr, char *string_name TSRMLS_DC); Index: Zend/zend_execute_API.c ================================================== ================= RCS file: /repository/ZendEngine2/zend_execute_API.c,v retrieving revision 1.375 diff -p -u -r1.375 zend_execute_API.c --- Zend/zend_execute_API.c 12 Jul 2006 07:54:18 -0000 1.375 +++ Zend/zend_execute_API.c 17 Jul 2006 19:47:30 -0000 @@ -784,7 +784,7 @@ int zend_call_function(zend_fcall_info * } if (Z_TYPE_P(fci->function_name) == IS_UNICODE) { - if ((colon.u = u_strstr(Z_USTRVAL_P(fci->function_name), (UChar*)":\0:\0")) != NULL) { + if ((colon.u = u_strstr(Z_USTRVAL_P(fci->function_name), u_doublecolon)) != NULL) { fname_len = u_strlen(colon.u+2); clen = Z_USTRLEN_P(fci->function_name) - fname_len - 2; fname.u = colon.u + 2; @@ -799,7 +799,7 @@ int zend_call_function(zend_fcall_info * if (colon.v != NULL) { zend_class_entry **pce, *ce_child = NULL; - lcname = zend_u_str_case_fold(Z_TYPE_P(fci->function_name), Z_UNIVAL_P(fci->function_name), clen, 0, &clen); + lcname = zend_u_str_case_fold(Z_TYPE_P(fci->function_name), Z_UNIVAL_P(fci->function_name), clen, 1, &clen); /* caution: lcname is not '\0' terminated */ if (calling_scope && clen == sizeof("self") - 1 && ZEND_U_EQUAL(Z_TYPE_P(fci->function_name), lcname, clen, "self", sizeof("self")-1)) { @@ -807,7 +807,7 @@ int zend_call_function(zend_fcall_info * } else if (calling_scope && clen == sizeof("parent") - 1 && ZEND_U_EQUAL(Z_TYPE_P(fci->function_name), lcname, clen, "parent", sizeof("parent")-1)) { ce_child = EG(active_op_array) && EG(active_op_array)->scope ? EG(scope)->parent : NULL; - } else if (zend_u_lookup_class(Z_TYPE_P(fci->function_name), Z_UNIVAL_P(fci->function_name), clen, &pce TSRMLS_CC) == SUCCESS) { + } else if (zend_u_lookup_class_ex(Z_TYPE_P(fci->function_name), lcname, clen, 1, 0, &pce TSRMLS_CC) == SUCCESS) { ce_child = *pce; } efree(lcname.v); @@ -1062,7 +1062,7 @@ int zend_call_function(zend_fcall_info * } -ZEND_API int zend_u_lookup_class_ex(zend_uchar type, zstr name, int name_length, int use_autoload, zend_class_entry ***ce TSRMLS_DC) +ZEND_API int zend_u_lookup_class_ex(zend_uchar type, zstr name, int name_length, int use_autoload, int do_normalize, zend_class_entry ***ce TSRMLS_DC) { zval **args[1]; zval autoload_function; @@ -1080,10 +1080,17 @@ ZEND_API int zend_u_lookup_class_ex(zend return FAILURE; } - lc_name = zend_u_str_case_fold(type, name, name_length, 1, &lc_name_len); + if (do_normalize) { + lc_name = zend_u_str_case_fold(type, name, name_length, 1, &lc_name_len); + } else { + lc_name = name; + lc_name_len = name_length; + } if (zend_u_hash_find(EG(class_table), type, lc_name, lc_name_len+1, (void **) ce) == SUCCESS) { - efree(lc_name.v); + if (do_normalize) { + efree(lc_name.v); + } return SUCCESS; } @@ -1091,7 +1098,9 @@ ZEND_API int zend_u_lookup_class_ex(zend * (doesn't impact fuctionality of __autoload() */ if (!use_autoload || zend_is_compiling(TSRMLS_C)) { - efree(lc_name.v); + if (do_normalize) { + efree(lc_name.v); + } return FAILURE; } @@ -1101,7 +1110,9 @@ ZEND_API int zend_u_lookup_class_ex(zend } if (zend_u_hash_add(EG(in_autoload), type, lc_name, lc_name_len+1, (void**)&dummy, sizeof(char), NULL) == FAILURE) { - efree(lc_name.v); + if (do_normalize) { + efree(lc_name.v); + } return FAILURE; } @@ -1143,12 +1154,16 @@ ZEND_API int zend_u_lookup_class_ex(zend if (retval == FAILURE) { EG(exception) = exception; - efree(lc_name.v); + if (do_normalize) { + efree(lc_name.v); + } return FAILURE; } if (EG(exception) && exception) { - efree(lc_name.v); + if (do_normalize) { + efree(lc_name.v); + } zend_error(E_ERROR, "Function %s(%R) threw an exception of type '%v'", ZEND_AUTOLOAD_FUNC_NAME, type, name, Z_OBJCE_P(EG(exception))->name); return FAILURE; } @@ -1160,13 +1175,15 @@ ZEND_API int zend_u_lookup_class_ex(zend } retval = zend_u_hash_find(EG(class_table), type, lc_name, lc_name_len + 1, (void **) ce); - efree(lc_name.v); + if (do_normalize) { + efree(lc_name.v); + } return retval; } ZEND_API int zend_u_lookup_class(zend_uchar type, zstr name, int name_length, zend_class_entry ***ce TSRMLS_DC) { - return zend_u_lookup_class_ex(type, name, name_length, 1, ce TSRMLS_CC); + return zend_u_lookup_class_ex(type, name, name_length, 1, 1, ce TSRMLS_CC); } ZEND_API int zend_lookup_class(char *name, int name_length, zend_class_entry ***ce TSRMLS_DC) @@ -1545,9 +1562,12 @@ void zend_unset_timeout(TSRMLS_D) ZEND_API zend_class_entry *zend_u_fetch_class(zend_uchar type, zstr class_name, uint class_name_len, int fetch_type TSRMLS_DC) { zend_class_entry **pce; - int use_autoload = (fetch_type & ZEND_FETCH_CLASS_NO_AUTOLOAD) == 0; + int use_autoload = (fetch_type & ZEND_FETCH_CLASS_NO_AUTOLOAD) ? 0 : 1; + int do_normalize = (fetch_type & ZEND_FETCH_CLASS_NO_NORMALIZE) ? 0 : 1; + zstr lcname = class_name; + + fetch_type = fetch_type & ~ZEND_FETCH_CLASS_FLAGS; - fetch_type = fetch_type & ~ZEND_FETCH_CLASS_NO_AUTOLOAD; check_fetch_type: switch (fetch_type) { case ZEND_FETCH_CLASS_SELF: @@ -1564,15 +1584,22 @@ check_fetch_type: } return EG(scope)->parent; case ZEND_FETCH_CLASS_AUTO: { - fetch_type = zend_get_class_fetch_type(type, class_name, class_name_len); + if (do_normalize) { + lcname = zend_u_str_case_fold(type, class_name, class_name_len, 1, &class_name_len); + } + fetch_type = zend_get_class_fetch_type(type, lcname, class_name_len); if (fetch_type!=ZEND_FETCH_CLASS_DEFAULT) { + if (do_normalize) { + efree(lcname.v); + do_normalize = 0; /* we've normalized it already, don't do it twice */ + } goto check_fetch_type; } } break; } - if (zend_u_lookup_class_ex(type, class_name, class_name_len, use_autoload, &pce TSRMLS_CC)==FAILURE) { + if (zend_u_lookup_class_ex(type, lcname, class_name_len, use_autoload, do_normalize, &pce TSRMLS_CC)==FAILURE) { if (use_autoload) { if (fetch_type == ZEND_FETCH_CLASS_INTERFACE) { zend_error(E_ERROR, "Interface '%R' not found", type, class_name); @@ -1580,8 +1607,14 @@ check_fetch_type: zend_error(E_ERROR, "Class '%R' not found", type, class_name); } } + if (lcname.v != class_name.v) { + efree(lcname.v); + } return NULL; } else { + if (lcname.v != class_name.v) { + efree(lcname.v); + } return *pce; } } Index: Zend/zend_language_scanner.l ================================================== ================= RCS file: /repository/ZendEngine2/zend_language_scanner.l,v retrieving revision 1.155 diff -p -u -r1.155 zend_language_scanner.l --- Zend/zend_language_scanner.l 12 Jun 2006 17:06:39 -0000 1.155 +++ Zend/zend_language_scanner.l 17 Jul 2006 19:47:30 -0000 @@ -444,7 +444,7 @@ static inline int zend_check_and_normali efree(Z_USTRVAL_P(zendlval)); return 0; } - if (!zend_normalize_identifier(&norm, &norm_len, Z_USTRVAL_P(zendlval), Z_USTRLEN_P(zendlval), 0)) { + if (zend_normalize_identifier(&norm, &norm_len, Z_USTRVAL_P(zendlval), Z_USTRLEN_P(zendlval), 0) == FAILURE) { zend_error(E_COMPILE_WARNING, "Could not normalize identifier: %r", Z_USTRVAL_P(zendlval)); efree(Z_USTRVAL_P(zendlval)); return 0; Index: Zend/zend_operators.c ================================================== ================= RCS file: /repository/ZendEngine2/zend_operators.c,v retrieving revision 1.248 diff -p -u -r1.248 zend_operators.c --- Zend/zend_operators.c 12 Jul 2006 19:34:55 -0000 1.248 +++ Zend/zend_operators.c 17 Jul 2006 19:47:30 -0000 @@ -2109,14 +2109,21 @@ ZEND_API zstr zend_u_str_case_fold(zend_ zstr ret; if (type == IS_UNICODE) { - int ret_len; + int ret_len = length; if (normalize) { - zend_normalize_identifier(&ret.u, &ret_len, source.u, length, 1); + if (zend_normalize_identifier(&ret.u, &ret_len, source.u, length, 1) == FAILURE) { + zend_error(E_NOTICE, "Could not normalize identifier"); + ret.u = eustrndup(source.u, length); + } } else { UErrorCode status = U_ZERO_ERROR; zend_case_fold_string(&ret.u, &ret_len, source.u, length, U_FOLD_CASE_DEFAULT, &status); + if (U_FAILURE(status)) { + zend_error(E_NOTICE, "Could not case-fold string"); + ret.u = eustrndup(source.u, length); + } } *new_len = ret_len; Index: Zend/zend_unicode.c ================================================== ================= RCS file: /repository/ZendEngine2/zend_unicode.c,v retrieving revision 1.25 diff -p -u -r1.25 zend_unicode.c --- Zend/zend_unicode.c 12 Jul 2006 17:35:06 -0000 1.25 +++ Zend/zend_unicode.c 17 Jul 2006 19:47:30 -0000 @@ -736,7 +736,7 @@ ZEND_API int zend_normalize_identifier(U if (unorm_quickCheck(ident, ident_len, UNORM_NFKC, &status) != UNORM_YES) { zend_normalize_string(&buffer, &buffer_len, ident, ident_len, &status); if (U_FAILURE(status)) { - return 0; + return FAILURE; } ident = buffer; ident_len = buffer_len; @@ -748,7 +748,7 @@ ZEND_API int zend_normalize_identifier(U efree(ident); } if (U_FAILURE(status)) { - return 0; + return FAILURE; } ident = buffer; ident_len = buffer_len; @@ -759,7 +759,7 @@ ZEND_API int zend_normalize_identifier(U efree(ident); } if (U_FAILURE(status)) { - return 0; + return FAILURE; } ident = buffer; ident_len = buffer_len; @@ -768,7 +768,7 @@ ZEND_API int zend_normalize_identifier(U *dest = ident; *dest_len = ident_len; - return 1; + return SUCCESS; } /* }}} */ Index: ext/reflection/php_reflection.c ================================================== ================= RCS file: /repository/php-src/ext/reflection/php_reflection.c,v retrieving revision 1.243 diff -p -u -r1.243 php_reflection.c --- ext/reflection/php_reflection.c 13 Jul 2006 12:34:30 -0000 1.243 +++ ext/reflection/php_reflection.c 17 Jul 2006 19:47:31 -0000 @@ -1972,7 +1972,7 @@ ZEND_METHOD(reflection_parameter, getCla GET_REFLECTION_OBJECT_PTR(param); if (param->arg_info->class_name.v) { - if (zend_u_lookup_class_ex(UG(unicode)?IS_UNICODE:IS_ STRING, param->arg_info->class_name, param->arg_info->class_name_len, 1, &pce TSRMLS_CC) == FAILURE) { + if (zend_u_lookup_class_ex(UG(unicode)?IS_UNICODE:IS_ STRING, param->arg_info->class_name, param->arg_info->class_name_len, 1, 1, &pce TSRMLS_CC) == FAILURE) { zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC, "Class %v does not exist", param->arg_info->class_name); return; --Apple-Mail-1-912469410 Content-Type: text/plain; charset=us-ascii -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php --Apple-Mail-1-912469410-- |
|
|
4
16th August 06:12
External User
Posts: 1
|
Hello Andrei,
looks pretty fine to me, after your treatment, go ahead commit - Andi, Zeev? best regards marcus Best regards, Marcus -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php |
|
|
7
16th August 06:12
External User
Posts: 1
|
We are actually normalizing, but only identifiers.
-Andrei -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php |
|
|
8
16th August 06:12
External User
Posts: 1
|
Yes, we are. But normalization (in our case) may involve case-folding
(for class/function names), so it's really a single operation. If you are asking whether we should have 2 flags for it, I don't believe so. -Andrei -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php |
|
|
10
16th August 07:26
External User
Posts: 1
|
We did talk about this before, on the php-unicode list if you
remember. The UTR#31 has a section about normalization: http://www.unicode.org/reports/tr31/ I think we should see what kind of performance penalties identifier normalization brings with it, if any. Once we have the numbers, it's very easy to replace full normalization with simple case-folding. -Andrei -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php |
|