Hello,

Il 11/02/2012 16:21, julien2412 ha scritto:
Hello,

Cppcheck reports this :
[spelldsp.hxx:138]: (error) Possible null pointer dereference: pCache -
otherwise it is redundant to check if pCache is null at line 136

Here are the lines :
     134 inline linguistic::SpellCache&  SpellCheckerDispatcher::GetCache()
const
     135 {
     136     if (!pCache)
     137         ((SpellCheckerDispatcher *) this)->pCache = new
linguistic::SpellCache();
     138     return *pCache;
     139 }

Here is a simple (naive ?) patch

diff --git a/linguistic/source/spelldsp.hxx b/linguistic/source/spelldsp.hxx
index 9ae9cd4..34ac28f 100644
--- a/linguistic/source/spelldsp.hxx
+++ b/linguistic/source/spelldsp.hxx
@@ -134,8 +134,11 @@ public:
  inline linguistic::SpellCache&  SpellCheckerDispatcher::GetCache() const
  {
      if (!pCache)
+    {
          ((SpellCheckerDispatcher *) this)->pCache = new
linguistic::SpellCache();
-    return *pCache;
+        return *pCache;
+    }
+    return NULL;

Is it ok ?

It looks wrong to me, i'm really not into C++ but it seems ((SpellCheckerDispatcher *) this)->pCache should be the same pCache you are dereferencing later. In any case you should not return NULL if pCache is something else, no?

What about this?

if (pCache)
   return *pCache;

return ((SpellCheckerDispatcher *) this)->pCache = new linguistic::SpellCache();

cheers,

--
Riccardo Magliocchetti
_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to