[PATCH 4/4] Improve isolated combining characters handling

Fabienne Ducroquet <[email protected]> Tue, 12 Apr 2016 21:02:38 +0200
Newsgroups gmane.comp.web.links
Message-ID <[email protected]>
SWYgdGhlcmUgYXJlIGlzb2xhdGVkIGNvbWJpbmluZyBjaGFyYWN0ZXJzLCBlLmcuIGF0IHRoZSBi
ZWdpbm5pbmcgb2YgYSBwYXJhZ3JhcGgKb3IgdGFibGUgY2VsbDoK4oCTIGlmIGl04oCZcyBub3Qg
dGhlIGZpcnN0IHNjcmVlbiBjb2x1bW4sIGNvbWJpbmUgdGhlbSB3aXRoIHdoYXRldmVyIGNoYXJh
Y3RlciBpcwpwcmludGVkIHRvIHRoZWlyIGxlZnQ7CuKAkyBvdGhlcndpc2UsIGFkZCBhIG5vLWJy
ZWFrIHNwYWNlIGFzIHRoZSBiYXNlIGNoYXJhY3Rlci4KClByZXZpb3VzbHksIHN1Y2ggY29tYmlu
aW5nIGNoYXJhY3RlcnMgd2VyZSBjb21iaW5lZCB3aXRoIHRoZSBsYXN0IGxldHRlcgpkaXNwbGF5
ZWQsIGkuZS4gdGhlIGxhc3QgbGV0dGVyIG9mIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGggb3IgY2Vs
bC4KClNpZ25lZC1vZmYtYnk6IEZhYmllbm5lIER1Y3JvcXVldCA8ZmFiaWR1Y0BnbWFpbC5jb20+
Ci0tLQogc3JjL2RvY3VtZW50L2h0bWwvcmVuZGVyZXIuYyB8IDUxICsrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNDIgaW5zZXJ0aW9u
cygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvZG9jdW1lbnQvaHRtbC9yZW5k
ZXJlci5jIGIvc3JjL2RvY3VtZW50L2h0bWwvcmVuZGVyZXIuYwppbmRleCBhNTVmNjJhLi41Yzg5
OGJiIDEwMDY0NAotLS0gYS9zcmMvZG9jdW1lbnQvaHRtbC9yZW5kZXJlci5jCisrKyBiL3NyYy9k
b2N1bWVudC9odG1sL3JlbmRlcmVyLmMKQEAgLTQyNyw2ICs0MjcsMjEgQEAgbW92ZV9jb21iX3hf
eShzdHJ1Y3QgcGFydCAqcGFydCwgaW50IHhmLCBpbnQgeWYsIGludCB4dCwgaW50IHl0KQogCiAj
aWZkZWYgQ09ORklHX0NPTUJJTkUKIHN0YXRpYyB2b2lkCitzZXRfY29tYl94X3koc3RydWN0IHBh
cnQgKnBhcnQsIGludCB4LCBpbnQgeSkKK3sKKwlzdHJ1Y3QgZG9jdW1lbnQgKmRvY3VtZW50ID0g
cGFydC0+ZG9jdW1lbnQ7CisKKwlkb2N1bWVudC0+Y29tYl94ID0gWCh4KTsKKwlkb2N1bWVudC0+
Y29tYl95ID0gWSh5KTsKKwlhc3NlcnRfY29tYl94X3lfb2soZG9jdW1lbnQpOworCWlmX2Fzc2Vy
dF9mYWlsZWQgZGlzY2FyZF9jb21iX3hfeShkb2N1bWVudCk7Cit9CisjZWxzZQorIyBkZWZpbmUg
c2V0X2NvbWJfeF95KHBhcnQsIHgsIHkpICgodm9pZCkgMCkKKyNlbmRpZgorCisjaWZkZWYgQ09O
RklHX0NPTUJJTkUKK3N0YXRpYyB2b2lkCiBwdXRfY29tYmluZWQoc3RydWN0IHBhcnQgKnBhcnQs
IGludCB4KQogewogCXN0cnVjdCBkb2N1bWVudCAqZG9jdW1lbnQgPSBwYXJ0LT5kb2N1bWVudDsK
QEAgLTU5NiwxMiArNjExLDMzIEBAIGdvb2RfY2hhcjoKIAkJCQkJcHV0X2NvbWJpbmVkKHBhcnQs
IHgpOwogCQkJCQlkb2N1bWVudC0+Y29tYmlbMF0gPSBkYXRhOwogCQkJCX0gZWxzZSB7Ci0JCQkJ
CWlmIChkb2N1bWVudC0+Y29tYmlfbGVuZ3RoIDwgKFVDU19NQVhfTEVOR1RIX0NPTUJJTkVEIC0g
MSkpIHsKLQkJCQkJCWRvY3VtZW50LT5jb21iaVsrK2RvY3VtZW50LT5jb21iaV9sZW5ndGhdID0g
ZGF0YTsKKwkJCQkJaWYgKHBhcnQtPmN4ID09IHgpIHsKKwkJCQkJCWlmIChYKHgpKSB7CisJCQkJ
CQkJLyogSXNvbGF0ZWQgY29tYmluaW5nIAorCQkJCQkJCSAqIGNoYXJhY3RlciBub3Qgb24gdGhl
IAorCQkJCQkJCSAqIGZpcnN0IGNvbHVtbjogY29tYmluZSAKKwkJCQkJCQkgKiBpdCB3aXRoIHdo
YXRldmVyIGlzIAorCQkJCQkJCSAqIHByaW50ZWQgYXQgaXRzIGxlZnQuICovCisJCQkJCQkJZG9j
dW1lbnQtPmNvbWJpWzBdID0gUE9TKHggLSAxLCB5KS5kYXRhOworCQkJCQkJCXNldF9jb21iX3hf
eShwYXJ0LCB4IC0gMSwgeSk7CisJCQkJCQl9IGVsc2UgeworCQkJCQkJCS8qIElzb2xhdGVkIGNv
bWJpbmluZyAKKwkJCQkJCQkgKiBjaGFyYWN0ZXIgb24gdGhlCisJCQkJCQkJICogZmlyc3QgY29s
dW1uOiB1c2UKKwkJCQkJCQkgKiBVQ1NfTk9fQlJFQUtfU1BBQ0UgYXMKKwkJCQkJCQkgKiB0aGUg
YmFzZSBjaGFyYWN0ZXIuCisJCQkJCQkJICogKi8KKwkJCQkJCQlkb2N1bWVudC0+Y29tYmlbMF0g
PSBVQ1NfTk9fQlJFQUtfU1BBQ0U7CisJCQkJCQkJc2V0X2NvbWJfeF95KHBhcnQsIHgsIHkpOwor
CQkJCQkJCXNjaGFyLT5kYXRhID0gVUNTX1NQQUNFOworCQkJCQkJCWNvcHlfc2NyZWVuX2NoYXJz
KCZQT1MoeCsrLCB5KSwgc2NoYXIsIDEpOworCQkJCQkJfQogCQkJCQl9CisJCQkJCWlmIChkb2N1
bWVudC0+Y29tYmlfbGVuZ3RoIDwgKFVDU19NQVhfTEVOR1RIX0NPTUJJTkVEIC0gMSkpCisJCQkJ
CQlkb2N1bWVudC0+Y29tYmlbKytkb2N1bWVudC0+Y29tYmlfbGVuZ3RoXSA9IGRhdGE7CiAJCQkJ
CWNvbnRpbnVlOwogCQkJCX0KLSNlbmRpZgorI2VuZGlmIC8qIENPTkZJR19DT01CSU5FICovCiAJ
CQkJcGFydC0+c3BhY2VzW3hdID0gKGRhdGEgPT0gVUNTX1NQQUNFKTsKIAogCQkJCWlmICh1bmlj
b2RlX3RvX2NlbGwoZGF0YSkgPT0gMikgewpAQCAtNjE1LDEyICs2NTEsOSBAQCBnb29kX2NoYXI6
CiAJCQkJCXBhcnQtPmNoYXJfd2lkdGhbeF0gPSB1bmljb2RlX3RvX2NlbGwoZGF0YSk7CiAJCQkJ
CXNjaGFyLT5kYXRhID0gKHVuaWNvZGVfdmFsX1QpZGF0YTsKIAkJCQl9Ci0jaWZkZWYgQ09ORklH
X0NPTUJJTkUKLQkJCQlkb2N1bWVudC0+Y29tYl94ID0gWCh4KTsKLQkJCQlkb2N1bWVudC0+Y29t
Yl95ID0gWSh5KTsKLQkJCQlhc3NlcnRfY29tYl94X3lfb2soZG9jdW1lbnQpOwotCQkJCWlmX2Fz
c2VydF9mYWlsZWQgZGlzY2FyZF9jb21iX3hfeShkb2N1bWVudCk7Ci0jZW5kaWYKKworCQkJCXNl
dF9jb21iX3hfeShwYXJ0LCB4LCB5KTsKKwogCQkJCWNvcHlfc2NyZWVuX2NoYXJzKCZQT1MoeCsr
LCB5KSwgc2NoYXIsIDEpOwogCQkJfSAvKiB3aGlsZSBjaGFycyA8IGVuZCAqLwogCi0tIAoyLjgu
MC5yYzMKCi0tIApodHRwOi8vbGlzdHMubGludXhmcm9tc2NyYXRjaC5vcmcvbGlzdGluZm8vZWxp
bmtzLWRldgpVbnN1YnNjcmliZTogU2VlIHRoZSBhYm92ZSBpbmZvcm1hdGlvbiBwYWdlCg==