[PATCH] UTF-8 bug in quote()

[PATCH] UTF-8 bug in quote()

am 26.02.2006 17:23:28 von Dominic Mitchell

--------------070300000102030802050100
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

It appears that quote() doesn't handle UTF-8 data correctly. This patch
adds support for doing that, and a test to check that it works ok.

-Dom

--------------070300000102030802050100
Content-Type: text/plain;
name="dbd-mysql-utf8-quote.patch"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="dbd-mysql-utf8-quote.patch"

ZGlmZiAtYnVyTiAteCBteXNxbC5tdGVzdCBEQkQtbXlzcWwtMy4wMDAyXzUv TUFOSUZFU1Qg
REJELW15c3FsLTMuMDAwMl81LmRvbS9NQU5JRkVTVAotLS0gREJELW15c3Fs LTMuMDAwMl81
L01BTklGRVNUCTIwMDUtMDktMjcgMDA6MTU6MDEuMDAwMDAwMDAwICswMTAw CisrKyBEQkQt
bXlzcWwtMy4wMDAyXzUuZG9tL01BTklGRVNUCTIwMDYtMDItMjYgMTY6MTY6 MzQuMDAwMDAw
MDAwICswMDAwCkBAIC0yMSw2ICsyMSw3IEBACiB0L215c3FsLmRidGVzdAog dC9teXNxbC50
CiB0L215c3FsMi50Cit0L3V0ZjgudAogbGliL0RCRC9teXNxbC9HZXRJbmZv LnBtCiBsaWIv
REJEL215c3FsL0lOU1RBTEwucG9kCiBsaWIvREJEL215c3FsLnBtCmRpZmYg LWJ1ck4gLXgg
bXlzcWwubXRlc3QgREJELW15c3FsLTMuMDAwMl81L2RiZGltcC5jIERCRC1t eXNxbC0zLjAw
MDJfNS5kb20vZGJkaW1wLmMKLS0tIERCRC1teXNxbC0zLjAwMDJfNS9kYmRp bXAuYwkyMDA2
LTAyLTAxIDIyOjQ5OjAyLjAwMDAwMDAwMCArMDAwMAorKysgREJELW15c3Fs LTMuMDAwMl81
LmRvbS9kYmRpbXAuYwkyMDA2LTAyLTI2IDE2OjE3OjU4LjM2OTM5NjEyOCAr MDAwMApAQCAt
NDI1Niw2ICs0MjU2LDcgQEAKIAogICAgIHB0cj0gU3ZQVihzdHIsIGxlbik7 CiAgICAgcmVz
dWx0PSBuZXdTVihsZW4qMiszKTsKKyAgICBpZiAoU3ZVVEY4KHN0cikpIFN2 VVRGOF9vbihy
ZXN1bHQpOwogICAgIHNwdHI9IFN2UFZYKHJlc3VsdCk7CiAKICAgICAqc3B0 cisrID0gJ1wn
JzsKZGlmZiAtYnVyTiAteCBteXNxbC5tdGVzdCBEQkQtbXlzcWwtMy4wMDAy XzUvdC91dGY4
LnQgREJELW15c3FsLTMuMDAwMl81LmRvbS90L3V0ZjgudAotLS0gREJELW15 c3FsLTMuMDAw
Ml81L3QvdXRmOC50CTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICsw MTAwCisrKyBE
QkQtbXlzcWwtMy4wMDAyXzUuZG9tL3QvdXRmOC50CTIwMDYtMDItMjYgMTY6 MTU6NDYuMDAw
MDAwMDAwICswMDAwCkBAIC0wLDAgKzEsOTkgQEAKKyMhL3Vzci9sb2NhbC9i aW4vcGVybAor
IworIyAgICRJZCQKKyMKKyMgICBUaGlzIGNoZWNrcyBmb3IgVVRGLTggc3Vw cG9ydC4KKyMK
KworCisjCisjICAgTWFrZSAtdyBoYXBweQorIwordXNlIHZhcnMgcXcoJHRl c3RfZHNuICR0
ZXN0X3VzZXIgJHRlc3RfcGFzc3dvcmQgJG1kcml2ZXIgJHZlcmJvc2UgJHN0 YXRlCisJICAg
ICRkYmRyaXZlcik7Cit1c2UgdmFycyBxdygkQ09MX05VTExBQkxFICRDT0xf S0VZKTsKKyR0
ZXN0X2RzbiA9ICcnOworJHRlc3RfdXNlciA9ICcnOworJHRlc3RfcGFzc3dv cmQgPSAnJzsK
KworCisjCisjICAgSW5jbHVkZSBsaWIucGwKKyMKK3VzZSBEQkk7Cit1c2Ug c3RyaWN0Owor
JG1kcml2ZXIgPSAiIjsKK3sKKyAgICBteSAkZmlsZTsKKyAgICBmb3JlYWNo ICRmaWxlICgi
bGliLnBsIiwgInQvbGliLnBsIikgeworCWRvICRmaWxlOyBpZiAoJEApIHsg cHJpbnQgU1RE
RVJSICJFcnJvciB3aGlsZSBleGVjdXRpbmcgbGliLnBsOiAkQFxuIjsKKwkJ CSAgICBleGl0
IDEwOworCQkJfQorCWlmICgkbWRyaXZlciBuZSAnJykgeworCSAgICBsYXN0 OworCX0KKyAg
ICB9Cit9CisKK3N1YiBTZXJ2ZXJFcnJvcigpIHsKKyAgICBwcmludCBTVERF UlIgKCJDYW5u
b3QgY29ubmVjdDogIiwgJERCSTo6ZXJyc3RyLCAiXG4iLAorCSJcdEVpdGhl ciB5b3VyIHNl
cnZlciBpcyBub3QgdXAgYW5kIHJ1bm5pbmcgb3IgeW91IGhhdmUgbm9cbiIs CisJIlx0cGVy
bWlzc2lvbnMgZm9yIGFjZXNzaW5nIHRoZSBEU04gJHRlc3RfZHNuLlxuIiwK KwkiXHRUaGlz
IHRlc3QgcmVxdWlyZXMgYSBydW5uaW5nIHNlcnZlciBhbmQgd3JpdGUgcGVy bWlzc2lvbnMu
XG4iLAorCSJcdFBsZWFzZSBtYWtlIHN1cmUgeW91ciBzZXJ2ZXIgaXMgcnVu bmluZyBhbmQg
eW91IGhhdmVcbiIsCisJIlx0cGVybWlzc2lvbnMsIHRoZW4gcmV0cnkuXG4i KTsKKyAgICBl
eGl0IDEwOworfQorCisjCisjICAgTWFpbiBsb29wOyBsZWF2ZSB0aGlzIHVu dG91Y2hlZCwg
cHV0IHRlc3RzIGFmdGVyIGNyZWF0aW5nCisjICAgdGhlIG5ldyB0YWJsZS4K KyMKK3doaWxl
IChUZXN0aW5nKCkpIHsKKyAgICBteSAoJGRiaCwgJHN0aCwgJHF1ZXJ5KTsK KworICAgICMK
KyAgICAjICAgQ29ubmVjdCB0byB0aGUgZGF0YWJhc2UKKyAgICBUZXN0KCRz dGF0ZSBvciAo
JGRiaCA9IERCSS0+Y29ubmVjdCgkdGVzdF9kc24sICR0ZXN0X3VzZXIsCisJ CQkJCSR0ZXN0
X3Bhc3N3b3JkKSkpCisJICAgb3IgU2VydmVyRXJyb3IoKTsKKworICAgICMK KyAgICAjICAg
RmluZCBhIHBvc3NpYmxlIG5ldyB0YWJsZSBuYW1lCisgICAgIworICAgIG15 ICR0YWJsZSA9
ICcnOworICAgIFRlc3QoJHN0YXRlIG9yICR0YWJsZSA9IEZpbmROZXdUYWJs ZSgkZGJoKSkK
KwkgICBvciBFcnJNc2dGKCJDYW5ub3QgZGV0ZXJtaW5lIGEgbGVnYWwgdGFi bGUgbmFtZTog
RXJyb3IgJXMuXG4iLAorCQkgICAgICAkZGJoLT5lcnJzdHIpOworCisgICAg IworICAgICMg
ICBDcmVhdGUgYSBuZXcgdGFibGU7IEVESVQgVEhJUyEKKyAgICAjCisgICAg VGVzdCgkc3Rh
dGUgb3IgKCRxdWVyeSA9IFRhYmxlRGVmaW5pdGlvbigkdGFibGUsCisJCQkJ ICAgICAgWyJp
ZCIsICAgIklOVEVHRVIiLCAgNCwgJENPTF9OVUxMQUJMRV0sCisJCQkJICAg ICAgWyJuYW1l
IiwgIkNIQVIiLCAgICA2NCwgJENPTF9OVUxMQUJMRV0pLAorCQkgICAgJGRi aC0+ZG8oJHF1
ZXJ5KSkpCisJb3IgRXJyTXNnRigiQ2Fubm90IGNyZWF0ZSB0YWJsZTogRXJy b3IgJXMuXG4i
LAorCQkgICAgICAkZGJoLT5lcnJzdHIpOworCisKKyAgICAjCisgICAgIyAg IGFuZCBoZXJl
J3MgdGhlIHJpZ2h0IHBsYWNlIGZvciBpbnNlcnRpbmcgbmV3IHRlc3RzOgor ICAgICMKKwor
ICAgIG15ICR1dGY4X3N0ciAgICAgICAgPSAiXHh7MDEwMH1kYW0iOyAgICAg IyAiQWRhbSIg
d2l0aCBhIG1hY3Jvbi4KKyAgICBteSAkcXVvdGVkX3V0Zjhfc3RyID0gIidc eHswMTAwfWRh
bSciOworICAgIFRlc3QoICRzdGF0ZSBvciAoICRkYmgtPnF1b3RlKCAkdXRm OF9zdHIgKSBl
cSAkcXVvdGVkX3V0Zjhfc3RyICkgKQorICAgICAgb3IgRXJyTXNnKCAiRmFp bGVkIHRvIHJl
dGFpbiBVVEYtOCBmbGFnIHdoZW4gcXVvdGVpbmcuXG4iICk7CisKKyAgICAj CisgICAgIyAg
IEZpbmFsbHkgZHJvcCB0aGUgdGVzdCB0YWJsZS4KKyAgICAjCisgICAgVGVz dCgkc3RhdGUg
b3IgJGRiaC0+ZG8oIkRST1AgVEFCTEUgJHRhYmxlIikpCisJICAgb3IgRXJy TXNnRigiQ2Fu
bm90IERST1AgdGVzdCB0YWJsZSAkdGFibGU6ICVzLlxuIiwKKwkJICAgICAg JGRiaC0+ZXJy
c3RyKTsKKworICAgICMgICAuLi4gYW5kIGRpc2Nvbm5lY3QKKyAgICBUZXN0 KCRzdGF0ZSBv
ciAkZGJoLT5kaXNjb25uZWN0KQorCW9yIEVyck1zZ0YoIkNhbm5vdCBkaXNj b25uZWN0OiAl
cy5cbiIsICRkYmgtPmVycm1zZyk7Cit9Cg==

--------------070300000102030802050100
Content-Type: text/plain; charset=us-ascii


--
MySQL Perl Mailing List
For list archives: http://lists.mysql.com/perl
To unsubscribe: http://lists.mysql.com/perl?unsub=gcdmp-msql-mysql-modules@m .gmane.org
--------------070300000102030802050100--