kde-core-devel@kde.org
[Top] [All Lists]

Re: Patch: Fix KEncodingProber crashiness

Subject: Re: Patch: Fix KEncodingProber crashiness
From: Jeff Mitchell
Date: Fri, 20 Mar 2009 19:35:44 -0400
Thiago Macieira wrote:
> Make a new function that returns QByteArray.
> 

New patch attached.

--Jeff
Index: kencodingprober.cpp
===================================================================
--- kencodingprober.cpp (revision 942070)
+++ kencodingprober.cpp (working copy)
@@ -39,10 +39,9 @@
 class KEncodingProberPrivate
 {
 public:
-    KEncodingProberPrivate(): encoding(strdup("")), prober(NULL), mStart(true) 
{};
+    KEncodingProberPrivate(): prober(NULL), mStart(true) {};
     ~KEncodingProberPrivate()
     {
-        delete encoding;
         delete prober;
     }
     void setProberType(KEncodingProber::ProberType pType)
@@ -130,7 +129,7 @@
                         break;
             }  // switch
 
-            if (encoding && strlen(encoding))
+            if (!encoding.isEmpty())
             {
                 proberState = KEncodingProber::FoundIt;
                 currentConfidence = 0.99f;
@@ -140,7 +139,7 @@
     KEncodingProber::ProberType proberType;
     KEncodingProber::ProberState proberState;
     float currentConfidence;
-    const char *encoding;
+    QString encoding;
     kencodingprober::nsCharSetProber *prober;
     bool mStart;
 };
@@ -201,12 +200,18 @@
     return d->proberState;
 }
 
+//DEPRECATED, do *not* use
 const char* KEncodingProber::encodingName() const
 {
+    return 0;
+}
+
+QByteArray KEncodingProber::encodingNameByteArray() const
+{
     if (!d->prober)
-        return strdup("UTF-8");
+        return QByteArray("UTF-8");
 
-    return strdup(d->prober->GetCharSetName());
+    return QByteArray(d->prober->GetCharSetName());
 }
 
 float KEncodingProber::confidence() const
Index: kencodingprober.h
===================================================================
--- kencodingprober.h   (revision 942070)
+++ kencodingprober.h   (working copy)
@@ -125,11 +125,16 @@
     ProberState state() const;
 
     /**
-     * @returns the name of the best encoding it guessed so far
+     * @returns Do not use this function.  It is unsafe.  Use 
encodingNameByteArray instead.
      */
-    const char* encodingName() const;
+    KDE_DEPRECATED const char* encodingName() const;
 
     /**
+     * @returns a QByteArray with the name of the encoding
+     */
+    QByteArray encodingNameByteArray() const;
+
+    /**
      * @returns the confidence(sureness) of encoding it guessed so far (0.0 ~ 
0.99), not very reliable for single byte encodings 
      */
     float confidence() const;
<Prev in Thread] Current Thread [Next in Thread>