[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    Re: KDE/kdelibs
From:       Alexis_Ménard <menard () kde ! org>
Date:       2009-03-24 14:35:07
Message-ID: 81941aea0903240735r1aefd28dw4ac5cda729be7624 () mail ! gmail ! com
[Download RAW message or body]

This patch breaks the selection in KWrite, just select some text and it
disappears.

On Sun, Mar 22, 2009 at 7:15 AM, Wang Kai <zealot.hoi@gmail.com> wrote:

> SVN commit 942585 by wkai:
>
> apply fixkencodingprober_v4.patch from mailing list, fix a memory leak
>
>  M  +1 -1      kate/document/katebuffer.cpp
>  M  +10 -16    kdecore/localization/kencodingprober.cpp
>  M  +1 -1      kdecore/localization/kencodingprober.h
>
>
> --- trunk/KDE/kdelibs/kate/document/katebuffer.cpp #942584:942585
> @@ -122,7 +122,7 @@
>           kDebug (13020) << "PROBER TYPE: " <<
> KEncodingProber::nameForProberType(m_prober->proberType());
>           m_prober->feed(m_buffer.data(), c);
>           if (m_prober->confidence() > 0.5)
> -            m_codec = QTextCodec::codecForName(m_prober->encodingName());
> +            m_codec =
> QTextCodec::codecForName(m_prober->encodingNameByteArray());
>           m_utf8Borked=errorsIfUtf8(m_buffer.data(), c);
>           m_binary=processNull(m_buffer.data(), c);
>           m_text = decoder()->toUnicode(m_buffer, c);
> --- trunk/KDE/kdelibs/kdecore/localization/kencodingprober.cpp
> #942584:942585
> @@ -34,8 +34,6 @@
>
>  #include <string.h>
>
> -#define MINIMUM_THRESHOLD (float)0.2
> -
>  class KEncodingProberPrivate
>  {
>  public:
> @@ -52,6 +50,9 @@
>         * for single-byte encodings (most western encodings),
> nsSBCSGroupProber is ok,
>         *   because encoding state machine can detect many such encodings.
>         */
> +
> +        delete prober;
> +
>         switch (proberType) {
>             case KEncodingProber::None:
>                 prober = NULL;
> @@ -101,45 +102,38 @@
>                 case '\xEF':
>                     if (('\xBB' == aBuf[1]) && ('\xBF' == aBuf[2]))
>                     // EF BB BF  UTF-8 encoded BOM
> -                    encoding = "UTF-8";
> +                    proberState = KEncodingProber::FoundIt;
>                     break;
>                 case '\xFE':
>                     if (('\xFF' == aBuf[1]) && ('\x00' == aBuf[2]) &&
> ('\x00' == aBuf[3]))
>                         // FE FF 00 00  UCS-4, unusual octet order BOM
> (3412)
> -                        encoding = "ISO-10646-UCS-4";
> +                        proberState = KEncodingProber::FoundIt;
>                     else if ('\xFF' == aBuf[1])
>                         // FE FF  UTF-16, big endian BOM
> -                        encoding = "UTF-16BE";
> +                        proberState = KEncodingProber::FoundIt;
>                         break;
>                 case '\x00':
>                     if (('\x00' == aBuf[1]) && ('\xFE' == aBuf[2]) &&
> ('\xFF' == aBuf[3]))
>                         // 00 00 FE FF  UTF-32, big-endian BOM
> -                        encoding = "UTF-32BE";
> +                        proberState = KEncodingProber::FoundIt;
>                     else if (('\x00' == aBuf[1]) && ('\xFF' == aBuf[2]) &&
> ('\xFE' == aBuf[3]))
>                         // 00 00 FF FE  UCS-4, unusual octet order BOM
> (2143)
> -                        encoding = "ISO-10646-UCS-4";
> +                        proberState = KEncodingProber::FoundIt;
>                         break;
>                 case '\xFF':
>                     if (('\xFE' == aBuf[1]) && ('\x00' == aBuf[2]) &&
> ('\x00' == aBuf[3]))
>                         // FF FE 00 00  UTF-32, little-endian BOM
> -                        encoding = "UTF-32LE";
> +                        proberState = KEncodingProber::FoundIt;
>                     else if ('\xFE' == aBuf[1])
>                         // FF FE  UTF-16, little endian BOM
> -                        encoding = "UTF-16LE";
> +                        proberState = KEncodingProber::FoundIt;
>                         break;
>             }  // switch
>
> -            if (!encoding.isEmpty())
> -            {
> -                proberState = KEncodingProber::FoundIt;
> -                currentConfidence = 0.99f;
> -            }
>         }
>     }
>     KEncodingProber::ProberType proberType;
>     KEncodingProber::ProberState proberState;
> -    float currentConfidence;
> -    QString encoding;
>     kencodingprober::nsCharSetProber *prober;
>     bool mStart;
>  };
> --- trunk/KDE/kdelibs/kdecore/localization/kencodingprober.h #942584:942585
> @@ -130,7 +130,7 @@
>     KDE_DEPRECATED const char* encodingName() const;
>
>     /**
> -     * @returns a QByteArray with the name of the encoding
> +     * @returns a QByteArray with the name of the best encoding it has
> guessed so far
>      */
>     QByteArray encodingNameByteArray() const;
>
>

[Attachment #3 (text/html)]

This patch breaks the selection in KWrite, just select some text and it \
disappears.<br><br><div class="gmail_quote">On Sun, Mar 22, 2009 at 7:15 AM, Wang Kai \
<span dir="ltr">&lt;<a \
href="mailto:zealot.hoi@gmail.com">zealot.hoi@gmail.com</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;">SVN commit 942585 by wkai:<br> <br>
apply fixkencodingprober_v4.patch from mailing list, fix a memory leak<br>
<br>
 M  +1 -1      kate/document/katebuffer.cpp<br>
 M  +10 -16    kdecore/localization/kencodingprober.cpp<br>
 M  +1 -1      kdecore/localization/kencodingprober.h<br>
<br>
<br>
--- trunk/KDE/kdelibs/kate/document/katebuffer.cpp #942584:942585<br>
@@ -122,7 +122,7 @@<br>
           kDebug (13020) &lt;&lt; &quot;PROBER TYPE: &quot; &lt;&lt; \
KEncodingProber::nameForProberType(m_prober-&gt;proberType());<br>  \
m_prober-&gt;feed(m_buffer.data(), c);<br>  if (m_prober-&gt;confidence() &gt; \
                0.5)<br>
-            m_codec = QTextCodec::codecForName(m_prober-&gt;encodingName());<br>
+            m_codec = \
QTextCodec::codecForName(m_prober-&gt;encodingNameByteArray());<br>  \
m_utf8Borked=errorsIfUtf8(m_buffer.data(), c);<br>  \
m_binary=processNull(m_buffer.data(), c);<br>  m_text = \
                decoder()-&gt;toUnicode(m_buffer, c);<br>
--- trunk/KDE/kdelibs/kdecore/localization/kencodingprober.cpp #942584:942585<br>
@@ -34,8 +34,6 @@<br>
<br>
 #include &lt;string.h&gt;<br>
<br>
-#define MINIMUM_THRESHOLD (float)0.2<br>
-<br>
 class KEncodingProberPrivate<br>
 {<br>
 public:<br>
@@ -52,6 +50,9 @@<br>
         * for single-byte encodings (most western encodings), nsSBCSGroupProber is \
                ok,<br>
         *   because encoding state machine can detect many such encodings.<br>
         */<br>
+<br>
+        delete prober;<br>
+<br>
         switch (proberType) {<br>
             case KEncodingProber::None:<br>
                 prober = NULL;<br>
@@ -101,45 +102,38 @@<br>
                 case &#39;\xEF&#39;:<br>
                     if ((&#39;\xBB&#39; == aBuf[1]) &amp;&amp; (&#39;\xBF&#39; == \
aBuf[2]))<br>  // EF BB BF  UTF-8 encoded BOM<br>
-                    encoding = &quot;UTF-8&quot;;<br>
+                    proberState = KEncodingProber::FoundIt;<br>
                     break;<br>
                 case &#39;\xFE&#39;:<br>
                     if ((&#39;\xFF&#39; == aBuf[1]) &amp;&amp; (&#39;\x00&#39; == \
                aBuf[2]) &amp;&amp; (&#39;\x00&#39; == aBuf[3]))<br>
                         // FE FF 00 00  UCS-4, unusual octet order BOM (3412)<br>
-                        encoding = &quot;ISO-10646-UCS-4&quot;;<br>
+                        proberState = KEncodingProber::FoundIt;<br>
                     else if (&#39;\xFF&#39; == aBuf[1])<br>
                         // FE FF  UTF-16, big endian BOM<br>
-                        encoding = &quot;UTF-16BE&quot;;<br>
+                        proberState = KEncodingProber::FoundIt;<br>
                         break;<br>
                 case &#39;\x00&#39;:<br>
                     if ((&#39;\x00&#39; == aBuf[1]) &amp;&amp; (&#39;\xFE&#39; == \
aBuf[2]) &amp;&amp; (&#39;\xFF&#39; == aBuf[3]))<br>  // 00 00 FE FF  UTF-32, \
                big-endian BOM<br>
-                        encoding = &quot;UTF-32BE&quot;;<br>
+                        proberState = KEncodingProber::FoundIt;<br>
                     else if ((&#39;\x00&#39; == aBuf[1]) &amp;&amp; (&#39;\xFF&#39; \
                == aBuf[2]) &amp;&amp; (&#39;\xFE&#39; == aBuf[3]))<br>
                         // 00 00 FF FE  UCS-4, unusual octet order BOM (2143)<br>
-                        encoding = &quot;ISO-10646-UCS-4&quot;;<br>
+                        proberState = KEncodingProber::FoundIt;<br>
                         break;<br>
                 case &#39;\xFF&#39;:<br>
                     if ((&#39;\xFE&#39; == aBuf[1]) &amp;&amp; (&#39;\x00&#39; == \
aBuf[2]) &amp;&amp; (&#39;\x00&#39; == aBuf[3]))<br>  // FF FE 00 00  UTF-32, \
                little-endian BOM<br>
-                        encoding = &quot;UTF-32LE&quot;;<br>
+                        proberState = KEncodingProber::FoundIt;<br>
                     else if (&#39;\xFE&#39; == aBuf[1])<br>
                         // FF FE  UTF-16, little endian BOM<br>
-                        encoding = &quot;UTF-16LE&quot;;<br>
+                        proberState = KEncodingProber::FoundIt;<br>
                         break;<br>
             }  // switch<br>
<br>
-            if (!encoding.isEmpty())<br>
-            {<br>
-                proberState = KEncodingProber::FoundIt;<br>
-                currentConfidence = 0.99f;<br>
-            }<br>
         }<br>
     }<br>
     KEncodingProber::ProberType proberType;<br>
     KEncodingProber::ProberState proberState;<br>
-    float currentConfidence;<br>
-    QString encoding;<br>
     kencodingprober::nsCharSetProber *prober;<br>
     bool mStart;<br>
 };<br>
--- trunk/KDE/kdelibs/kdecore/localization/kencodingprober.h #942584:942585<br>
@@ -130,7 +130,7 @@<br>
     KDE_DEPRECATED const char* encodingName() const;<br>
<br>
     /**<br>
-     * @returns a QByteArray with the name of the encoding<br>
+     * @returns a QByteArray with the name of the best encoding it has guessed so \
                far<br>
      */<br>
     QByteArray encodingNameByteArray() const;<br>
<br>
</blockquote></div><br>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic