Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


Hi Joe,

On 19 July 2011 06:40, Joseph Powers <JPOWERS27@cox.net> wrote:
I'd like someone doing a Unix build to review this for me. I compile Mac and this is Unix only 
code so I don't just want to push and hope...

First I thought it would compile and want just to write something but
then I tried and it doesn't.
But my question is:
Would not it be better to replace List with std::list ? Or if vector I
don't like erase because it's not effective.
In this case I'd use maBmpList.pop_back(). On the first sight I
thought you have mistake in:

 void ImplSalBitmapCache::ImplRemove( X11SalBitmap* pBmp )
 {
-    for( ImplBmpObj* pObj = (ImplBmpObj*) maBmpList.Last(); pObj;
pObj = (ImplBmpObj*) maBmpList.Prev() )
+    for( size_t i = maBmpList.size(); i; )
     {
+        ImplBmpObj* pObj = maBmpList[ --i ];
         if( pObj->mpBmp == pBmp )
         {
-            maBmpList.Remove( pObj );
+            maBmpList.erase( maBmpList.begin() + i );
             pObj->mpBmp->ImplRemovedFromCache();
             mnTotalSize -= pObj->mnMemSize;
             delete pObj;

But then I realized you are decreasing i in ImplBmpObj* pObj = maBmpList[ --i ];
So - maBmpList.erase( maBmpList.begin() + i ); is in fact pop_back and
it's effective but personally I'd use the latter to avoid mistakes.

Now here is what I got on 32bit Ubuntu:

vcl/unx/generic/gdi/salbmp.cxx: In member function ‘void
ImplSalBitmapCache::ImplAdd(X11SalBitmap*, sal_uLong, sal_uLong)’:
vcl/unx/generic/gdi/salbmp.cxx:1218: error: invalid use of incomplete
type ‘struct ImplSalBitmapCache::ImplBmpObj’
vcl/inc/unx/salbmp.h:253: error: forward declaration of ‘struct
ImplSalBitmapCache::ImplBmpObj’
vcl/unx/generic/gdi/salbmp.cxx:1226: error: invalid use of incomplete
type ‘struct ImplSalBitmapCache::ImplBmpObj’
vcl/inc/unx/salbmp.h:253: error: forward declaration of ‘struct
ImplSalBitmapCache::ImplBmpObj’
vcl/unx/generic/gdi/salbmp.cxx:1227: error: invalid use of incomplete
type ‘struct ImplSalBitmapCache::ImplBmpObj’
vcl/inc/unx/salbmp.h:253: error: forward declaration of ‘struct
ImplSalBitmapCache::ImplBmpObj’
vcl/unx/generic/gdi/salbmp.cxx:1227: error: invalid use of incomplete
type ‘struct ImplSalBitmapCache::ImplBmpObj’
vcl/inc/unx/salbmp.h:253: error: forward declaration of ‘struct
ImplSalBitmapCache::ImplBmpObj’
vcl/unx/generic/gdi/salbmp.cxx:1230: error: invalid use of incomplete
type ‘struct ImplSalBitmapCache::ImplBmpObj’
vcl/inc/unx/salbmp.h:253: error: forward declaration of ‘struct
ImplSalBitmapCache::ImplBmpObj’
vcl/unx/generic/gdi/salbmp.cxx: In member function ‘void
ImplSalBitmapCache::ImplRemove(X11SalBitmap*)’:
vcl/unx/generic/gdi/salbmp.cxx:1240: error: invalid use of incomplete
type ‘struct ImplSalBitmapCache::ImplBmpObj’
vcl/inc/unx/salbmp.h:253: error: forward declaration of ‘struct
ImplSalBitmapCache::ImplBmpObj’
vcl/unx/generic/gdi/salbmp.cxx:1243: error: invalid use of incomplete
type ‘struct ImplSalBitmapCache::ImplBmpObj’
vcl/inc/unx/salbmp.h:253: error: forward declaration of ‘struct
ImplSalBitmapCache::ImplBmpObj’
vcl/unx/generic/gdi/salbmp.cxx:1244: error: invalid use of incomplete
type ‘struct ImplSalBitmapCache::ImplBmpObj’
vcl/inc/unx/salbmp.h:253: error: forward declaration of ‘struct
ImplSalBitmapCache::ImplBmpObj’
vcl/unx/generic/gdi/salbmp.cxx:1245: warning: possible problem
detected in invocation of delete operator:
vcl/unx/generic/gdi/salbmp.cxx:1239: warning: ‘pObj’ has incomplete type
vcl/inc/unx/salbmp.h:253: warning: forward declaration of ‘struct
ImplSalBitmapCache::ImplBmpObj’
vcl/unx/generic/gdi/salbmp.cxx:1245: note: neither the destructor nor
the class-specific operator delete will be called, even if they are
declared when the class is defined.
vcl/unx/generic/gdi/salbmp.cxx: In member function ‘void
ImplSalBitmapCache::ImplClear()’:
vcl/unx/generic/gdi/salbmp.cxx:1257: error: invalid use of incomplete
type ‘struct ImplSalBitmapCache::ImplBmpObj’
vcl/inc/unx/salbmp.h:253: error: forward declaration of ‘struct
ImplSalBitmapCache::ImplBmpObj’
vcl/unx/generic/gdi/salbmp.cxx:1258: warning: possible problem
detected in invocation of delete operator:
vcl/unx/generic/gdi/salbmp.cxx:1258: warning: invalid use of
incomplete type ‘struct ImplSalBitmapCache::ImplBmpObj’
vcl/inc/unx/salbmp.h:253: warning: forward declaration of ‘struct
ImplSalBitmapCache::ImplBmpObj’
vcl/unx/generic/gdi/salbmp.cxx:1258: note: neither the destructor nor
the class-specific operator delete will be called, even if they are
declared when the class is defined.

I was not investigating where the problem is, I think you can handle it.

All the best,
Matus

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.