Skip to content

Commit 63eb73a

Browse files
committed
Destroy the Image from ImageUtil (resolve C4150: deletion of pointer to incomplete type)
1 parent 3989f81 commit 63eb73a

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

source/core/support/imageutil.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1397,6 +1397,11 @@ void Destroy_Image(ImageData *image)
13971397
// delete image;
13981398
}
13991399

1400+
void Remove_Cached_Image(Image* image) {
1401+
delete image;
1402+
}
1403+
1404+
14001405
ImageData::~ImageData()
14011406
{
14021407
#ifdef POV_VIDCAP_IMPL

source/core/support/imageutil.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ int map_pos(const Vector3d& EPoint, const ImageData* pImage, DBL *xcoor, DBL *yc
143143
ImageData *Copy_Image(ImageData *old);
144144
ImageData *Create_Image(void);
145145
void Destroy_Image(ImageData *image);
146+
void Remove_Cached_Image(Image* image);
146147

147148
/// @}
148149
///

source/parser/ImageCache.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
#include "base/textstreambuffer.h"
5959
#include "base/image/image_fwd.h"
6060
#include "base/stringutilities.h"
61+
#include "core/support/imageutil.h"
6162

6263
// this must be the last file included
6364
#include "base/povdebug.h"
@@ -67,7 +68,7 @@ namespace pov_image_cache
6768
{
6869
using namespace pov_base;
6970
using namespace std;
70-
//static inline char* StrToChar(const std::string str);
71+
using namespace pov;
7172

7273
struct ImageCacheEntry final
7374
{
@@ -103,7 +104,8 @@ namespace pov_image_cache
103104
return idx->second.image; //Cache[lookupFilename].image;
104105

105106
// Remove old image from cache and release memory so the newer version can be loaded
106-
delete idx->second.image;
107+
//delete idx->second.image;
108+
pov::Remove_Cached_Image(idx->second.image);
107109
Cache.erase(idx);
108110
}
109111

@@ -127,7 +129,8 @@ namespace pov_image_cache
127129
// Iterate over the map using Iterator till end.
128130
while (it != Cache.end())
129131
{
130-
delete it->second.image;
132+
//delete it->second.image;
133+
pov::Remove_Cached_Image(it->second.image);
131134
Cache.erase(it);
132135
}
133136
}

0 commit comments

Comments
 (0)