That&#39;s a hacky fix without an explanation.<br><br>Explain to me which layers/modules want SvUTF8 strings, which don&#39;t, and where the malformed conversion is happening, and then let&#39;s do a small, surgical fix.&nbsp; Not a massive &quot;use bytes&quot; hammer at the top that might fix it but might break something else that was expecting SvUTF8 scalars.&nbsp; (perhaps libxml in the XML stream to users, for instance, or libxml parsing itself....)<br>
<br><div class="gmail_quote">On Fri, Jan 23, 2009 at 12:48 AM, Aleksey Luzin <span dir="ltr">&lt;<a href="mailto:subscr@p34.net">subscr@p34.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hello,<br>
<br>
Is this issue still exists ?<br>
I have fixed russian nicknames corruptions by adding string<br>
use bytes;<br>
in module IQ.pm<br>
<div><div></div><div class="Wj3C7c"><br>
On Friday 26 September 2008 19:25:49 Michael Scherer wrote:<br>
&gt; Le samedi 22 septembre 2007 à 20:56 +0000, Brad Fitzpatrick a écrit :<br>
&gt; &gt; A perl program has to use Perl&#39;s UTF8 scalars everywhere, or nowhere,<br>
&gt; &gt; otherwise introducing them (as this patch does) starts the contagious<br>
&gt; &gt; spread of them... whenever one touches a non-UTF8 scalar, perl starts<br>
&gt; &gt; converting the one that&#39;s touched.<br>
&gt; &gt;<br>
&gt; &gt; I imagine we do use it, though, as XML libraries tend to use it?<br>
&gt; &gt;<br>
&gt; &gt; So this _should_ be safe and the correct fix (I&#39;ve seen the same bug,<br>
&gt; &gt; btw), but I want somebody to double-check we are using Perl&#39;s UTF-8 for<br>
&gt; &gt; djabberd...<br>
&gt; &gt;<br>
&gt; &gt; Can somebody look at Devel::Peek on a scalar (say a username) when a<br>
&gt; &gt; non-ASCII username comes in, and see if the SvUTF8 flag is on?<br>
&gt;<br>
&gt; Since it seems no one did it, I decided to take a closer look at this<br>
&gt; request, and it seems the UTF8 flags is already set with or without my<br>
&gt; patch :<br>
&gt;<br>
&gt;<br>
&gt; without it :<br>
&gt;<br>
&gt; SV = RV(0x8c64024) at 0x8c64018<br>
&gt; &nbsp; REFCNT = 1<br>
&gt; &nbsp; FLAGS = (PADMY,ROK)<br>
&gt; &nbsp; RV = 0x8e12820<br>
&gt; &nbsp; SV = PVAV(0x8e61cb8) at 0x8e12820<br>
&gt; &nbsp; &nbsp; REFCNT = 6<br>
&gt; &nbsp; &nbsp; FLAGS = (OBJECT,OVERLOAD)<br>
&gt; &nbsp; &nbsp; STASH = 0x86d7d28 &quot;DJabberd::JID&quot;<br>
&gt; &nbsp; &nbsp; ARRAY = 0x8eecd18<br>
&gt; &nbsp; &nbsp; FILL = 5<br>
&gt; &nbsp; &nbsp; MAX = 11<br>
&gt; &nbsp; &nbsp; ARYLEN = 0x0<br>
&gt; &nbsp; &nbsp; FLAGS = (REAL)<br>
&gt; &nbsp; &nbsp; Elt No. 0<br>
&gt; &nbsp; &nbsp; SV = PVMG(0x8da44dc) at 0x8e29b40<br>
&gt; &nbsp; &nbsp; &nbsp; REFCNT = 1<br>
&gt; &nbsp; &nbsp; &nbsp; FLAGS = (POK,pPOK,UTF8)<br>
&gt; &nbsp; &nbsp; &nbsp; IV = 0<br>
&gt; &nbsp; &nbsp; &nbsp; NV = 0<br>
&gt; &nbsp; &nbsp; &nbsp; PV = 0x8d9b530 &quot;phoebe&quot;\0 [UTF8 &quot;phoebe&quot;]<br>
&gt; &nbsp; &nbsp; &nbsp; CUR = 6<br>
&gt; &nbsp; &nbsp; &nbsp; LEN = 8<br>
&gt; &nbsp; &nbsp; Elt No. 1<br>
&gt; &nbsp; &nbsp; SV = PVMG(0x8da4300) at 0x8f04940<br>
&gt; &nbsp; &nbsp; &nbsp; REFCNT = 1<br>
&gt; &nbsp; &nbsp; &nbsp; FLAGS = (POK,pPOK,UTF8)<br>
&gt; &nbsp; &nbsp; &nbsp; IV = 0<br>
&gt; &nbsp; &nbsp; &nbsp; NV = 0<br>
&gt; &nbsp; &nbsp; &nbsp; PV = 0x8dfb378 &quot;<a href="http://example.org" target="_blank">example.org</a>&quot;\0 [UTF8 &quot;<a href="http://example.org" target="_blank">example.org</a>&quot;]<br>
&gt; &nbsp; &nbsp; &nbsp; CUR = 11<br>
&gt; &nbsp; &nbsp; &nbsp; LEN = 12<br>
&gt; &nbsp; &nbsp; Elt No. 2<br>
&gt; &nbsp; &nbsp; SV = PVMG(0x8da4290) at 0x8e29770<br>
&gt; &nbsp; &nbsp; &nbsp; REFCNT = 1<br>
&gt; &nbsp; &nbsp; &nbsp; FLAGS = (POK,pPOK,UTF8)<br>
&gt; &nbsp; &nbsp; &nbsp; IV = 0<br>
&gt; &nbsp; &nbsp; &nbsp; NV = 0<br>
&gt; &nbsp; &nbsp; &nbsp; PV = 0x8da1410 &quot;Sisay&quot;\0 [UTF8 &quot;Sisay&quot;]<br>
&gt; &nbsp; &nbsp; &nbsp; CUR = 5<br>
&gt; &nbsp; &nbsp; &nbsp; LEN = 8<br>
&gt; &nbsp; &nbsp; Elt No. 3<br>
&gt; &nbsp; &nbsp; SV = PV(0x8db6030) at 0x8e38a80<br>
&gt; &nbsp; &nbsp; &nbsp; REFCNT = 1<br>
&gt; &nbsp; &nbsp; &nbsp; FLAGS = (POK,pPOK,UTF8)<br>
&gt; &nbsp; &nbsp; &nbsp; PV = 0x8eecd50 &quot;<a href="http://phoebe@example.org/Sisay" target="_blank">phoebe@example.org/Sisay</a>&quot;\0 [UTF8<br>
&gt; &quot;<a href="http://phoebe@example.org/Sisay" target="_blank">phoebe@example.org/Sisay</a>&quot;]<br>
&gt; &nbsp; &nbsp; &nbsp; CUR = 24<br>
&gt; &nbsp; &nbsp; &nbsp; LEN = 28<br>
&gt;<br>
&gt;<br>
&gt; and with the patch<br>
&gt;<br>
&gt; SV = RV(0x8c642cc) at 0x8c642c0<br>
&gt; &nbsp; REFCNT = 1<br>
&gt; &nbsp; FLAGS = (PADMY,ROK)<br>
&gt; &nbsp; RV = 0x8f83560<br>
&gt; &nbsp; SV = PVAV(0x8ef2df8) at 0x8f83560<br>
&gt; &nbsp; &nbsp; REFCNT = 6<br>
&gt; &nbsp; &nbsp; FLAGS = (OBJECT,OVERLOAD)<br>
&gt; &nbsp; &nbsp; STASH = 0x86d7d28 &nbsp; &quot;DJabberd::JID&quot;<br>
&gt; &nbsp; &nbsp; ARRAY = 0x8ef5eb0<br>
&gt; &nbsp; &nbsp; FILL = 5<br>
&gt; &nbsp; &nbsp; MAX = 11<br>
&gt; &nbsp; &nbsp; ARYLEN = 0x0<br>
&gt; &nbsp; &nbsp; FLAGS = (REAL)<br>
&gt; &nbsp; &nbsp; Elt No. 0<br>
&gt; &nbsp; &nbsp; SV = PVMG(0x8e37b08) at 0x8e75188<br>
&gt; &nbsp; &nbsp; &nbsp; REFCNT = 1<br>
&gt; &nbsp; &nbsp; &nbsp; FLAGS = (POK,pPOK,UTF8)<br>
&gt; &nbsp; &nbsp; &nbsp; IV = 0<br>
&gt; &nbsp; &nbsp; &nbsp; NV = 0<br>
&gt; &nbsp; &nbsp; &nbsp; PV = 0x8d92f88 &quot;phoebe&quot;\0 [UTF8 &quot;phoebe&quot;]<br>
&gt; &nbsp; &nbsp; &nbsp; CUR = 6<br>
&gt; &nbsp; &nbsp; &nbsp; LEN = 8<br>
&gt;<br>
&gt; &nbsp; &nbsp; Elt No. 1<br>
&gt; &nbsp; &nbsp; SV = PVMG(0x8eb7cfc) at 0x8f10228<br>
&gt; &nbsp; &nbsp; &nbsp; REFCNT = 1<br>
&gt; &nbsp; &nbsp; &nbsp; FLAGS = (POK,pPOK,UTF8)<br>
&gt; &nbsp; &nbsp; &nbsp; IV = 0<br>
&gt; &nbsp; &nbsp; &nbsp; NV = 0<br>
&gt; &nbsp; &nbsp; &nbsp; PV = 0x8ea5568 &quot;<a href="http://example.org" target="_blank">example.org</a>&quot;\0 [UTF8 &quot;<a href="http://ephaone.org" target="_blank">ephaone.org</a>&quot;]<br>
&gt; &nbsp; &nbsp; &nbsp; CUR = 11<br>
&gt; &nbsp; &nbsp; &nbsp; LEN = 12<br>
&gt; &nbsp; &nbsp; Elt No. 2<br>
&gt; &nbsp; &nbsp; SV = PVMG(0x8e37aec) at 0x8eed410<br>
&gt; &nbsp; &nbsp; &nbsp; REFCNT = 1<br>
&gt; &nbsp; &nbsp; &nbsp; FLAGS = (POK,pPOK,UTF8)<br>
&gt; &nbsp; &nbsp; &nbsp; IV = 0<br>
&gt; &nbsp; &nbsp; &nbsp; NV = 0<br>
&gt; &nbsp; &nbsp; &nbsp; PV = 0x8e58dd8 &quot;Sisay&quot;\0 [UTF8 &quot;Sisay&quot;]<br>
&gt; &nbsp; &nbsp; &nbsp; CUR = 5<br>
&gt; &nbsp; &nbsp; &nbsp; LEN = 8<br>
&gt; &nbsp; &nbsp; Elt No. 3<br>
&gt; &nbsp; &nbsp; SV = PV(0x8de9dc0) at 0x8f02360<br>
&gt; &nbsp; &nbsp; &nbsp; REFCNT = 1<br>
&gt; &nbsp; &nbsp; &nbsp; FLAGS = (POK,pPOK,UTF8)<br>
&gt; &nbsp; &nbsp; &nbsp; PV = 0x8f08a78 &quot;<a href="http://phoebe@example.org/Sisay" target="_blank">phoebe@example.org/Sisay</a>&quot;\0 [UTF8<br>
&gt; &quot;<a href="http://phoebe@ephaone.org/Sisay" target="_blank">phoebe@ephaone.org/Sisay</a>&quot;]<br>
&gt; &nbsp; &nbsp; &nbsp; CUR = 24<br>
&gt; &nbsp; &nbsp; &nbsp; LEN = 28<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; So i guess that, if I add that i have been running the server since one<br>
&gt; year without problem, that the patch is sae enough to be pushed<br>
&gt; ( the one i posted on<br>
&gt; <a href="http://lists.danga.com/pipermail/djabberd/2007-September/000401.html" target="_blank">http://lists.danga.com/pipermail/djabberd/2007-September/000401.html</a> )<br>
<br>
</div></div></blockquote></div><br>