Permalink
Browse files

Introduced use of ref_ptr<> and private destructor to tighen up memor…

…y management and avoid users attempting to inappropriately delete TexCoordRange.
  • Loading branch information...
robertosfield committed Jan 9, 2019
1 parent 466bbc6 commit 3da76932e60c8653d008b1f225996f54f9bf0a2e
Showing with 5 additions and 3 deletions.
  1. +2 −0 include/osgDB/ImageOptions
  2. +3 −3 src/osgPlugins/gdal/ReaderWriterGDAL.cpp
@@ -120,6 +120,8 @@ class OSGDB_EXPORT ImageOptions : public osgDB::Options
}

double _x,_y,_w,_h;
protected:
virtual ~TexCoordRange() {}
};


@@ -142,7 +142,7 @@ class ReaderWriterGDAL : public osgDB::ReaderWriter
// int destHeight = osg::minimum(dataHeight,4096);


osgDB::ImageOptions::TexCoordRange* texCoordRange = 0;
osg::ref_ptr<osgDB::ImageOptions::TexCoordRange> texCoordRange;

osgDB::ImageOptions* imageOptions = dynamic_cast<osgDB::ImageOptions*>(const_cast<osgDB::ReaderWriter::Options*>(options));
if (imageOptions)
@@ -557,7 +557,7 @@ class ReaderWriterGDAL : public osgDB::ReaderWriter
(unsigned char *)imageData,
osg::Image::USE_NEW_DELETE);

if (texCoordRange) image->setUserData(texCoordRange);
if (texCoordRange.valid()) image->setUserData(texCoordRange.get());

image->flipVertical();

@@ -593,7 +593,7 @@ class ReaderWriterGDAL : public osgDB::ReaderWriter
int destWidth = osg::minimum(dataWidth,4096);
int destHeight = osg::minimum(dataHeight,4096);

osgDB::ImageOptions::TexCoordRange* texCoordRange = 0;
osg::ref_ptr<osgDB::ImageOptions::TexCoordRange> texCoordRange;

const osgDB::ImageOptions* imageOptions = dynamic_cast<const osgDB::ImageOptions*>(options);
if (imageOptions)

0 comments on commit 3da7693

Please sign in to comment.