Fixed a range of issues reported by cppcheck:
[examples/osgphotoalbum/PhotoArchive.cpp:56]: (error) Memory leak: fileIndentifier [examples/osgphotoalbum/PhotoArchive.cpp:257]: (error) Deallocating a deallocated pointer: newData [examples/osgphotoalbum/PhotoArchive.cpp:318]: (error) Deallocating a deallocated pointer: newData [src/osg/ImageUtils.cpp:116]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/ImageUtils.cpp:307]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/ImageUtils.cpp:312]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/ImageUtils.cpp:367]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/ImageUtils.cpp:399]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/ImageUtils.cpp:400]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/ImageUtils.cpp:482]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/ImageUtils.cpp:483]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/ImageUtils.cpp:484]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/ImageUtils.cpp:519]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/ImageUtils.cpp:536]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/OcclusionQueryNode.cpp:71]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/OcclusionQueryNode.cpp:74]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/OcclusionQueryNode.cpp:77]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/OcclusionQueryNode.cpp:82]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/OcclusionQueryNode.cpp:102]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/OcclusionQueryNode.cpp:107]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/OcclusionQueryNode.cpp:599]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/OcclusionQueryNode.cpp:600]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/OcclusionQueryNode.cpp:601]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/OcclusionQueryNode.cpp:602]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/OcclusionQueryNode.cpp:603]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/OcclusionQueryNode.cpp:604]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/OcclusionQueryNode.cpp:605]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osg/OcclusionQueryNode.cpp:606]: (portability) Extra qualification 'osg::' unnecessary and considered an error by many compilers. [src/osgDB/ExternalFileWriter.cpp:134]: (portability) Extra qualification 'osgDB::' unnecessary and considered an error by many compilers. [src/osgDB/ExternalFileWriter.cpp:135]: (portability) Extra qualification 'osgDB::' unnecessary and considered an error by many compilers. [src/osgDB/ExternalFileWriter.cpp:136]: (portability) Extra qualification 'osgDB::' unnecessary and considered an error by many compilers. [src/osgDB/ExternalFileWriter.cpp:137]: (portability) Extra qualification 'osgDB::' unnecessary and considered an error by many compilers. [src/osgDB/ExternalFileWriter.cpp:139]: (portability) Extra qualification 'osgDB::' unnecessary and considered an error by many compilers. [src/osgDB/ExternalFileWriter.cpp:177]: (portability) Extra qualification 'osgDB::' unnecessary and considered an error by many compilers. [src/osgDB/ExternalFileWriter.cpp:178]: (portability) Extra qualification 'osgDB::' unnecessary and considered an error by many compilers. [src/osgDB/ExternalFileWriter.cpp:195]: (portability) Extra qualification 'osgDB::' unnecessary and considered an error by many compilers. [src/osgDB/ExternalFileWriter.cpp:198]: (portability) Extra qualification 'osgDB::' unnecessary and considered an error by many compilers. [src/osgDB/ExternalFileWriter.cpp:203]: (portability) Extra qualification 'osgDB::' unnecessary and considered an error by many compilers. [src/osgDB/ExternalFileWriter.cpp:205]: (portability) Extra qualification 'osgDB::' unnecessary and considered an error by many compilers. [src/osgDB/ExternalFileWriter.cpp:253]: (portability) Extra qualification 'osgDB::' unnecessary and considered an error by many compilers. [src/osgDB/InputStream.cpp:553]: (error) Memory leak: data [src/osgDB/OutputStream.cpp:393]: (error) Memory leak: data [src/osgPlugins/Inventor/ConvertToInventor.cpp:656]: (error) Mismatching allocation and deallocation: tmpArray [src/osgPlugins/Inventor/ReaderWriterIV.cpp:237]: (error) Common realloc mistake: 'buf' nulled but not freed upon failure [src/osgPlugins/OpenFlight/expGeometryRecords.cpp:167]: (portability) Extra qualification 'flt::' unnecessary and considered an error by many compilers. [src/osgPlugins/OpenFlight/expGeometryRecords.cpp:373]: (portability) Extra qualification 'flt::' unnecessary and considered an error by many compilers. [src/osgPlugins/cfg/CameraConfig.cpp:635]: (error) Unusual pointer arithmetic [src/osgPlugins/freetype/FreeTypeLibrary.cpp:122]: (error) Memory leak: buffer [src/osgPlugins/geo/ReaderWriterGEO.cpp:210]: (error) Possible null pointer dereference: gfd - otherwise it is redundant to check if gfd is null at line 211 [src/osgPlugins/geo/ReaderWriterGEO.cpp:227]: (error) Possible null pointer dereference: gfd - otherwise it is redundant to check if gfd is null at line 228 [src/osgPlugins/geo/ReaderWriterGEO.cpp:903]: (error) Possible null pointer dereference: gfd - otherwise it is redundant to check if gfd is null at line 904 [src/osgPlugins/geo/osgGeoNodes.h:180]: (error) Memory leak: geoHeaderGeo::intVars [src/osgPlugins/geo/osgGeoNodes.h:181]: (error) Memory leak: geoHeaderGeo::useVars [src/osgPlugins/geo/osgGeoNodes.h:182]: (error) Memory leak: geoHeaderGeo::extVars [src/osgPlugins/md2/ReaderWriterMD2.cpp:180]: (error) Memory leak: mapbase [src/osgPlugins/md2/ReaderWriterMD2.cpp:166]: (error) Resource leak: file_fd [src/osgPlugins/pic/ReaderWriterPIC.cpp:152]: (error) Mismatching allocation and deallocation: tmpbuf [src/osgPlugins/pic/ReaderWriterPIC.cpp:153]: (error) Mismatching allocation and deallocation: buffer [src/osgPlugins/ply/plyfile.cpp:843]: (error) Memory leak: plyfile [src/osgPlugins/pvr/ReaderWriterPVR.cpp:179]: (error) Memory leak: imageData [src/osgPlugins/shp/ESRIShapeParser.cpp:29]: (error) Resource leak: fd [src/osgPlugins/shp/XBaseParser.cpp:96]: (error) Resource leak: fd [src/osgPlugins/zip/unzip.cpp:3158]: (error) Possible null pointer dereference: s - otherwise it is redundant to check if s is null at line 3159 [src/osgPlugins/zip/unzip.cpp:4155]: (error) Dangerous usage of 'rd' (strncpy doesn't always 0-terminate it) [src/osgShadow/MinimalCullBoundsShadowMap.cpp:334]: (error) Possible null pointer dereference: rl - otherwise it is redundant to check if rl is null at line 331 [src/osgViewer/ScreenCaptureHandler.cpp:617]: (error) Possible null pointer dereference: camera - otherwise it is redundant to check if camera is null at line 611 [src/osgViewer/ScreenCaptureHandler.cpp:632]: (error) Possible null pointer dereference: camera - otherwise it is redundant to check if camera is null at line 626 [src/osgVolume/Locator.cpp:209]: (error) Dangerous iterator usage after erase()-method. [src/osgVolume/RayTracedTechnique.cpp:274]: (error) Possible null pointer dereference: imageLayer - otherwise it is redundant to check if imageLayer is null at line 259 [src/osgVolume/RayTracedTechnique.cpp:275]: (error) Possible null pointer dereference: imageLayer - otherwise it is redundant to check if imageLayer is null at line 259 [src/osgWrappers/serializers/osg/ShaderBinary.cpp:28]: (error) Mismatching allocation and deallocation: data
This commit is contained in:
parent
20f334b6f8
commit
7f9e1c5a6f
@ -41,7 +41,12 @@ bool PhotoArchive::readPhotoIndex(const std::string& filename)
|
|||||||
|
|
||||||
char* fileIndentifier = new char [FILE_IDENTIFER.size()];
|
char* fileIndentifier = new char [FILE_IDENTIFER.size()];
|
||||||
in.read(fileIndentifier,FILE_IDENTIFER.size());
|
in.read(fileIndentifier,FILE_IDENTIFER.size());
|
||||||
if (FILE_IDENTIFER!=fileIndentifier) return false;
|
if (FILE_IDENTIFER!=fileIndentifier)
|
||||||
|
{
|
||||||
|
delete [] fileIndentifier;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
delete [] fileIndentifier;
|
||||||
|
|
||||||
unsigned int numPhotos;
|
unsigned int numPhotos;
|
||||||
in.read((char*)&numPhotos,sizeof(numPhotos));
|
in.read((char*)&numPhotos,sizeof(numPhotos));
|
||||||
@ -231,9 +236,9 @@ void PhotoArchive::buildArchive(const std::string& filename, const FileNameList&
|
|||||||
|
|
||||||
if (status!=0)
|
if (status!=0)
|
||||||
{
|
{
|
||||||
delete [] newData;
|
delete [] newData;
|
||||||
|
|
||||||
osg::notify(osg::WARN) << "Error scaleImage() did not succeed : errorString = "<<osg::gluErrorString((GLenum)status)<<std::endl;
|
osg::notify(osg::WARN) << "Error scaleImage() did not succeed : errorString = "<<osg::gluErrorString((GLenum)status)<<std::endl;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// now set up the photo header.
|
// now set up the photo header.
|
||||||
@ -298,9 +303,9 @@ void PhotoArchive::buildArchive(const std::string& filename, const FileNameList&
|
|||||||
|
|
||||||
if (status!=0)
|
if (status!=0)
|
||||||
{
|
{
|
||||||
delete [] newData;
|
delete [] newData;
|
||||||
|
|
||||||
osg::notify(osg::WARN) << "Error scaleImage() did not succeed : errorString = "<<osg::gluErrorString((GLenum)status)<<std::endl;
|
osg::notify(osg::WARN) << "Error scaleImage() did not succeed : errorString = "<<osg::gluErrorString((GLenum)status)<<std::endl;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ImageHeader imageHeader;
|
ImageHeader imageHeader;
|
||||||
|
@ -549,8 +549,10 @@ osg::Image* InputStream::readImage(bool readFromExternal)
|
|||||||
{
|
{
|
||||||
char* data = new char[size];
|
char* data = new char[size];
|
||||||
if ( !data )
|
if ( !data )
|
||||||
|
{
|
||||||
throwException( "InputStream::readImage(): Out of memory." );
|
throwException( "InputStream::readImage(): Out of memory." );
|
||||||
if ( getException() ) return NULL;
|
if ( getException() ) return NULL;
|
||||||
|
}
|
||||||
readCharArray( data, size );
|
readCharArray( data, size );
|
||||||
|
|
||||||
std::string ext = osgDB::getFileExtension( name );
|
std::string ext = osgDB::getFileExtension( name );
|
||||||
|
@ -389,8 +389,10 @@ void OutputStream::writeImage( const osg::Image* img )
|
|||||||
{
|
{
|
||||||
char* data = new char[size];
|
char* data = new char[size];
|
||||||
if ( !data )
|
if ( !data )
|
||||||
|
{
|
||||||
throwException( "OutputStream::writeImage(): Out of memory." );
|
throwException( "OutputStream::writeImage(): Out of memory." );
|
||||||
if ( getException() ) return;
|
if ( getException() ) return;
|
||||||
|
}
|
||||||
|
|
||||||
infile.seekg( 0, std::ios::beg );
|
infile.seekg( 0, std::ios::beg );
|
||||||
infile.read( data, size );
|
infile.read( data, size );
|
||||||
|
@ -653,7 +653,7 @@ static void postProcessField(const SbIntList &runLengths, osg::PrimitiveSet::Mod
|
|||||||
field->finishEditing();
|
field->finishEditing();
|
||||||
|
|
||||||
// free resources
|
// free resources
|
||||||
delete tmpArray;
|
delete [] tmpArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -234,7 +234,13 @@ ReaderWriterIV::readNode(std::istream& fin,
|
|||||||
dataSize += fin.gcount();
|
dataSize += fin.gcount();
|
||||||
if (bufSize == dataSize) {
|
if (bufSize == dataSize) {
|
||||||
bufSize *= 2;
|
bufSize *= 2;
|
||||||
buf = (char*)realloc(buf, bufSize);
|
char* new_buf = (char*)realloc(buf, bufSize);
|
||||||
|
if (!new_buf)
|
||||||
|
{
|
||||||
|
free(buf);
|
||||||
|
return osgDB::ReaderWriter::ReadResult::INSUFFICIENT_MEMORY_TO_LOAD;
|
||||||
|
}
|
||||||
|
buf = new_buf;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
input.setBuffer(buf, dataSize);
|
input.setBuffer(buf, dataSize);
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include <memory.h>
|
#include <memory.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
#include "CameraConfig.h"
|
#include "CameraConfig.h"
|
||||||
|
|
||||||
@ -632,7 +633,8 @@ bool CameraConfig::defaultConfig()
|
|||||||
|
|
||||||
for( unsigned int i = 0; i < numScreens; i++ )
|
for( unsigned int i = 0; i < numScreens; i++ )
|
||||||
{
|
{
|
||||||
std::string name = "Screen" + i;
|
std::stringstream sstr; sstr<<"Screen"<<i;
|
||||||
|
std::string name = sstr.str();
|
||||||
std::pair<std::map<std::string, osg::ref_ptr<Camera> >::iterator,bool> res =
|
std::pair<std::map<std::string, osg::ref_ptr<Camera> >::iterator,bool> res =
|
||||||
_camera_map.insert(std::pair<std::string, osg::ref_ptr<Camera> >(name, new Camera));
|
_camera_map.insert(std::pair<std::string, osg::ref_ptr<Camera> >(name, new Camera));
|
||||||
|
|
||||||
|
@ -119,6 +119,7 @@ FT_Byte* FreeTypeLibrary::getFace(std::istream& fontstream, unsigned int index,
|
|||||||
if (!fontstream || (static_cast<std::streampos>(fontstream.gcount()) != length))
|
if (!fontstream || (static_cast<std::streampos>(fontstream.gcount()) != length))
|
||||||
{
|
{
|
||||||
OSG_WARN<<" .... the font file could not be read from its stream"<<std::endl;
|
OSG_WARN<<" .... the font file could not be read from its stream"<<std::endl;
|
||||||
|
if (buffer) delete [] buffer;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
args.flags = FT_OPEN_MEMORY;
|
args.flags = FT_OPEN_MEMORY;
|
||||||
|
@ -58,11 +58,37 @@
|
|||||||
//
|
//
|
||||||
geoHeaderGeo::geoHeaderGeo()
|
geoHeaderGeo::geoHeaderGeo()
|
||||||
{ // animations for the header - actually updates all control variables
|
{ // animations for the header - actually updates all control variables
|
||||||
intVars=new internalVars; useVars=new userVars;
|
intVars=new internalVars;
|
||||||
|
useVars=new userVars;
|
||||||
extVars=new userVars;
|
extVars=new userVars;
|
||||||
_initialTick = _timer.tick();
|
|
||||||
color_palette=new colourPalette;
|
color_palette=new colourPalette;
|
||||||
|
_initialTick = _timer.tick();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
geoHeaderGeo::geoHeaderGeo(const geoHeaderGeo &geo,const osg::CopyOp& copyop) :
|
||||||
|
geoHeader(geo,copyop)
|
||||||
|
{
|
||||||
|
intVars=new internalVars(*geo.intVars);
|
||||||
|
useVars=new userVars(*geo.useVars);
|
||||||
|
extVars=new userVars(*geo.extVars);
|
||||||
|
color_palette=new colourPalette;
|
||||||
|
_initialTick = _timer.tick();
|
||||||
|
}
|
||||||
|
|
||||||
|
geoHeaderGeo::~geoHeaderGeo()
|
||||||
|
{
|
||||||
|
delete intVars;
|
||||||
|
delete useVars;
|
||||||
|
delete extVars;
|
||||||
|
|
||||||
|
if (color_palette)
|
||||||
|
{
|
||||||
|
color_palette->clear();
|
||||||
|
delete color_palette;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const geoValue *geoHeaderGeo::getGeoVar(const unsigned fid) const {
|
const geoValue *geoHeaderGeo::getGeoVar(const unsigned fid) const {
|
||||||
const geoValue *st=intVars->getGeoVar(fid);
|
const geoValue *st=intVars->getGeoVar(fid);
|
||||||
if (!st) {
|
if (!st) {
|
||||||
@ -207,37 +233,50 @@ public:
|
|||||||
int shademodel=gfshade ? gfshade->getInt() : -1;
|
int shademodel=gfshade ? gfshade->getInt() : -1;
|
||||||
if (shademodel!=GEO_POLY_SHADEMODEL_LIT && shademodel!=GEO_POLY_SHADEMODEL_FLAT) {
|
if (shademodel!=GEO_POLY_SHADEMODEL_LIT && shademodel!=GEO_POLY_SHADEMODEL_FLAT) {
|
||||||
const geoField *gfd=gr->getField(GEO_DB_VRTX_NORMAL);
|
const geoField *gfd=gr->getField(GEO_DB_VRTX_NORMAL);
|
||||||
if (gfd->getType()==DB_UINT) {
|
if (gfd)
|
||||||
if (gfd) {
|
{
|
||||||
|
if (gfd->getType()==DB_UINT)
|
||||||
|
{
|
||||||
unsigned int idx=gfd->getUInt();
|
unsigned int idx=gfd->getUInt();
|
||||||
normindices->push_back(idx);
|
normindices->push_back(idx);
|
||||||
norms->push_back((*npool)[idx]);
|
norms->push_back((*npool)[idx]);
|
||||||
} else {
|
}
|
||||||
|
else if (gfd->getType()==DB_VEC3F)
|
||||||
|
{
|
||||||
|
float *p=gfd->getVec3Arr();
|
||||||
|
osg::Vec3 nrm;
|
||||||
|
nrm.set(p[0],p[1],p[2]);
|
||||||
|
norms->push_back(nrm);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
OSG_WARN << "No valid vertex index" << std::endl;
|
OSG_WARN << "No valid vertex index" << std::endl;
|
||||||
}
|
}
|
||||||
} else if (gfd->getType()==DB_VEC3F) {
|
|
||||||
float *p=gfd->getVec3Arr();
|
|
||||||
osg::Vec3 nrm;
|
|
||||||
nrm.set(p[0],p[1],p[2]);
|
|
||||||
norms->push_back(nrm);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const geoField *gfd=gr->getField(GEO_DB_VRTX_COORD);
|
|
||||||
osg::Vec3 pos;
|
osg::Vec3 pos;
|
||||||
if (gfd->getType()==DB_INT) {
|
const geoField *gfd=gr->getField(GEO_DB_VRTX_COORD);
|
||||||
if (gfd) {
|
if (gfd)
|
||||||
int idx=gfd->getInt();
|
{
|
||||||
|
if (gfd->getType()==DB_INT)
|
||||||
|
{
|
||||||
|
int idx=gfd->getInt();
|
||||||
pos=(*cpool)[idx];
|
pos=(*cpool)[idx];
|
||||||
coords->push_back((*cpool)[idx]); //osg::Vec3(cpool[3*idx],cpool[3*idx+1],cpool[3*idx+2]));
|
coords->push_back((*cpool)[idx]); //osg::Vec3(cpool[3*idx],cpool[3*idx+1],cpool[3*idx+2]));
|
||||||
coordindices->push_back(coords->size());
|
coordindices->push_back(coords->size());
|
||||||
} else {
|
}
|
||||||
|
else if (gfd->getType()==DB_VEC3F)
|
||||||
|
{
|
||||||
|
float *p=gfd->getVec3Arr();
|
||||||
|
pos.set(p[0],p[1],p[2]);
|
||||||
|
coords->push_back(pos); //osg::Vec3(cpool[3*idx],cpool[3*idx+1],cpool[3*idx+2]));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
OSG_WARN << "No valid vertex index" << std::endl;
|
OSG_WARN << "No valid vertex index" << std::endl;
|
||||||
}
|
}
|
||||||
} else if (gfd->getType()==DB_VEC3F) {
|
|
||||||
float *p=gfd->getVec3Arr();
|
|
||||||
pos.set(p[0],p[1],p[2]);
|
|
||||||
coords->push_back(pos); //osg::Vec3(cpool[3*idx],cpool[3*idx+1],cpool[3*idx+2]));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector< georecord *>bhv=gr->getBehaviour(); // behaviours for vertices, eg tranlate, colour!
|
std::vector< georecord *>bhv=gr->getBehaviour(); // behaviours for vertices, eg tranlate, colour!
|
||||||
if (!bhv.empty()) {
|
if (!bhv.empty()) {
|
||||||
int ncoord=coords->size();
|
int ncoord=coords->size();
|
||||||
@ -898,19 +937,24 @@ class ReaderGEO
|
|||||||
(*itr)->getType()==DB_DSK_FAT_VERTEX ||
|
(*itr)->getType()==DB_DSK_FAT_VERTEX ||
|
||||||
(*itr)->getType()==DB_DSK_SLIM_VERTEX)
|
(*itr)->getType()==DB_DSK_SLIM_VERTEX)
|
||||||
{ // light point vertices
|
{ // light point vertices
|
||||||
const geoField *gfd=(*itr)->getField(GEO_DB_VRTX_COORD);
|
|
||||||
osg::Vec3 pos;
|
osg::Vec3 pos;
|
||||||
if (gfd->getType()==DB_INT) {
|
const geoField *gfd=(*itr)->getField(GEO_DB_VRTX_COORD);
|
||||||
if (gfd) {
|
if (gfd) {
|
||||||
int idx=gfd->getInt();
|
if (gfd->getType()==DB_INT)
|
||||||
pos=coord_pool[idx];
|
{
|
||||||
} else {
|
int idx=gfd->getInt();
|
||||||
|
pos=coord_pool[idx];
|
||||||
|
}
|
||||||
|
else if (gfd->getType()==DB_VEC3F)
|
||||||
|
{
|
||||||
|
float *p=gfd->getVec3Arr();
|
||||||
|
pos.set(p[0],p[1],p[2]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
OSG_WARN << "No valid vertex index" << std::endl;
|
OSG_WARN << "No valid vertex index" << std::endl;
|
||||||
}
|
}
|
||||||
} else if (gfd->getType()==DB_VEC3F) {
|
|
||||||
float *p=gfd->getVec3Arr();
|
|
||||||
pos.set(p[0],p[1],p[2]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gfd=(*itr)->getField(GEO_DB_VRTX_PACKED_COLOR);
|
gfd=(*itr)->getField(GEO_DB_VRTX_PACKED_COLOR);
|
||||||
if (gfd) {
|
if (gfd) {
|
||||||
unsigned char *cls=gfd->getUCh4Arr();
|
unsigned char *cls=gfd->getUCh4Arr();
|
||||||
|
@ -131,12 +131,8 @@ class geoHeaderGeo: public geoHeader {
|
|||||||
// including animation variables.
|
// including animation variables.
|
||||||
public:
|
public:
|
||||||
geoHeaderGeo();
|
geoHeaderGeo();
|
||||||
~geoHeaderGeo() { color_palette->clear(); }
|
geoHeaderGeo(const geoHeaderGeo &geo,const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY);
|
||||||
geoHeaderGeo(const geoHeaderGeo &geo,const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY) :
|
|
||||||
geoHeader(geo,copyop){
|
|
||||||
intVars=new internalVars(*geo.intVars); useVars=new userVars(*geo.useVars);
|
|
||||||
extVars=new userVars(*geo.extVars);
|
|
||||||
}
|
|
||||||
void addInternalVars(const georecord &gr) { intVars->addInternalVars(gr);}
|
void addInternalVars(const georecord &gr) { intVars->addInternalVars(gr);}
|
||||||
internalVars *getInternalVars(void) const { return intVars;}
|
internalVars *getInternalVars(void) const { return intVars;}
|
||||||
const std::string getVarname(const unsigned fid) const {
|
const std::string getVarname(const unsigned fid) const {
|
||||||
@ -174,14 +170,18 @@ public:
|
|||||||
}
|
}
|
||||||
void addColour(unsigned char *cpal) {(*color_palette).push_back(cpal);}
|
void addColour(unsigned char *cpal) {(*color_palette).push_back(cpal);}
|
||||||
inline colourPalette *getColorPalette() const { return color_palette;}
|
inline colourPalette *getColorPalette() const { return color_palette;}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual ~geoHeaderGeo();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
osg::Timer_t _lastFrameTick,_initialTick;
|
void moveit(const double t);
|
||||||
osg::Timer _timer;
|
osg::Timer_t _lastFrameTick,_initialTick;
|
||||||
internalVars *intVars;
|
osg::Timer _timer;
|
||||||
userVars *useVars;
|
internalVars *intVars;
|
||||||
userVars *extVars;
|
userVars *useVars;
|
||||||
void moveit(const double t);
|
userVars *extVars;
|
||||||
colourPalette *color_palette; // the colour palette - used in colour animations
|
colourPalette *color_palette; // the colour palette - used in colour animations
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -153,7 +153,6 @@ load_md2 (const char *filename, const osgDB::ReaderWriter::Options* options)
|
|||||||
{
|
{
|
||||||
struct stat st;
|
struct stat st;
|
||||||
void *mapbase;
|
void *mapbase;
|
||||||
// void *p;
|
|
||||||
int file_fd;
|
int file_fd;
|
||||||
osg::Node* result = NULL;
|
osg::Node* result = NULL;
|
||||||
|
|
||||||
@ -163,23 +162,23 @@ load_md2 (const char *filename, const osgDB::ReaderWriter::Options* options)
|
|||||||
|
|
||||||
file_fd = open (filename, O_RDONLY);
|
file_fd = open (filename, O_RDONLY);
|
||||||
if (file_fd <= 0) {
|
if (file_fd <= 0) {
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
mapbase = mmap (NULL, st.st_size, PROT_READ, MAP_SHARED, file_fd, 0);
|
|
||||||
if (mapbase == NULL) {
|
|
||||||
close (file_fd);
|
close (file_fd);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
mapbase = malloc (st.st_size);
|
mapbase = malloc (st.st_size);
|
||||||
if (read(file_fd, mapbase, st.st_size)==0)
|
if (!mapbase)
|
||||||
{
|
{
|
||||||
close (file_fd);
|
close (file_fd);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
if (read(file_fd, mapbase, st.st_size)==0)
|
||||||
|
{
|
||||||
|
close (file_fd);
|
||||||
|
if (mapbase) free(mapbase);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (g_md2NormalsArray == NULL) {
|
if (g_md2NormalsArray == NULL) {
|
||||||
g_md2NormalsArray = new osg::Vec3Array;
|
g_md2NormalsArray = new osg::Vec3Array;
|
||||||
|
@ -149,8 +149,8 @@ int *numComponents_ret)
|
|||||||
if (tmpbuf == NULL || buffer == NULL)
|
if (tmpbuf == NULL || buffer == NULL)
|
||||||
{
|
{
|
||||||
picerror = ERROR_MEMORY;
|
picerror = ERROR_MEMORY;
|
||||||
if (tmpbuf) free(tmpbuf);
|
if (tmpbuf) delete [] tmpbuf;
|
||||||
if (buffer) free(buffer);
|
if (buffer) delete [] buffer;
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -828,6 +828,8 @@ PlyFile *ply_read(FILE *fp, int *nelems, char ***elem_names)
|
|||||||
/* create record for this object */
|
/* create record for this object */
|
||||||
|
|
||||||
plyfile = (PlyFile *) myalloc (sizeof (PlyFile));
|
plyfile = (PlyFile *) myalloc (sizeof (PlyFile));
|
||||||
|
if (!plyfile) return (NULL);
|
||||||
|
|
||||||
plyfile->nelems = 0;
|
plyfile->nelems = 0;
|
||||||
plyfile->comments = NULL;
|
plyfile->comments = NULL;
|
||||||
plyfile->num_comments = 0;
|
plyfile->num_comments = 0;
|
||||||
@ -840,15 +842,25 @@ PlyFile *ply_read(FILE *fp, int *nelems, char ***elem_names)
|
|||||||
|
|
||||||
words = get_words (plyfile->fp, &nwords, &orig_line);
|
words = get_words (plyfile->fp, &nwords, &orig_line);
|
||||||
if (!words || !equal_strings (words[0], "ply"))
|
if (!words || !equal_strings (words[0], "ply"))
|
||||||
|
{
|
||||||
|
if (words) free( words);
|
||||||
|
free( plyfile );
|
||||||
return (NULL);
|
return (NULL);
|
||||||
|
}
|
||||||
|
|
||||||
while (words) {
|
while (words)
|
||||||
|
{
|
||||||
|
|
||||||
/* parse words */
|
/* parse words */
|
||||||
|
|
||||||
if (equal_strings (words[0], "format")) {
|
if (equal_strings (words[0], "format"))
|
||||||
|
{
|
||||||
if (nwords != 3)
|
if (nwords != 3)
|
||||||
|
{
|
||||||
|
free( words );
|
||||||
|
free( plyfile );
|
||||||
return (NULL);
|
return (NULL);
|
||||||
|
}
|
||||||
if (equal_strings (words[1], "ascii"))
|
if (equal_strings (words[1], "ascii"))
|
||||||
plyfile->file_type = PLY_ASCII;
|
plyfile->file_type = PLY_ASCII;
|
||||||
else if (equal_strings (words[1], "binary_big_endian"))
|
else if (equal_strings (words[1], "binary_big_endian"))
|
||||||
@ -856,10 +868,11 @@ PlyFile *ply_read(FILE *fp, int *nelems, char ***elem_names)
|
|||||||
else if (equal_strings (words[1], "binary_little_endian"))
|
else if (equal_strings (words[1], "binary_little_endian"))
|
||||||
plyfile->file_type = PLY_BINARY_LE;
|
plyfile->file_type = PLY_BINARY_LE;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
free (words);
|
free( words );
|
||||||
|
free( plyfile );
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
plyfile->version = osg::asciiToDouble (words[2]);
|
plyfile->version = osg::asciiToDouble (words[2]);
|
||||||
}
|
}
|
||||||
else if (equal_strings (words[0], "element"))
|
else if (equal_strings (words[0], "element"))
|
||||||
@ -871,10 +884,10 @@ PlyFile *ply_read(FILE *fp, int *nelems, char ***elem_names)
|
|||||||
else if (equal_strings (words[0], "obj_info"))
|
else if (equal_strings (words[0], "obj_info"))
|
||||||
add_obj_info (plyfile, orig_line);
|
add_obj_info (plyfile, orig_line);
|
||||||
else if (equal_strings (words[0], "end_header"))
|
else if (equal_strings (words[0], "end_header"))
|
||||||
{
|
{
|
||||||
free (words);
|
free (words);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* free up words space */
|
/* free up words space */
|
||||||
free (words);
|
free (words);
|
||||||
|
@ -172,11 +172,18 @@ public:
|
|||||||
else
|
else
|
||||||
hasAlpha = false;
|
hasAlpha = false;
|
||||||
|
|
||||||
osg::Image *image = new osg::Image;
|
osg::ref_ptr<osg::Image> image = new osg::Image;
|
||||||
unsigned char *imageData = new unsigned char[header.dataLength];
|
if (!image) return ReadResult::INSUFFICIENT_MEMORY_TO_LOAD;
|
||||||
|
|
||||||
|
unsigned char *imageData = new unsigned char[header.dataLength];
|
||||||
|
if (!imageData) return ReadResult::INSUFFICIENT_MEMORY_TO_LOAD;
|
||||||
|
|
||||||
fin.read((char*)imageData, header.dataLength);
|
fin.read((char*)imageData, header.dataLength);
|
||||||
if(!fin.good())
|
if(!fin.good())
|
||||||
|
{
|
||||||
|
delete [] imageData;
|
||||||
return ReadResult::ERROR_IN_READING_FILE;
|
return ReadResult::ERROR_IN_READING_FILE;
|
||||||
|
}
|
||||||
|
|
||||||
image->setImage(header.width, header.height, 1,
|
image->setImage(header.width, header.height, 1,
|
||||||
internalFormat, internalFormat,
|
internalFormat, internalFormat,
|
||||||
@ -227,7 +234,7 @@ public:
|
|||||||
if(!mipmapdata.empty())
|
if(!mipmapdata.empty())
|
||||||
image->setMipmapLevels(mipmapdata);
|
image->setMipmapLevels(mipmapdata);
|
||||||
|
|
||||||
return image;
|
return image.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
osg::notify(osg::WARN) << "Failed to read pvr data." << std::endl;
|
osg::notify(osg::WARN) << "Failed to read pvr data." << std::endl;
|
||||||
|
@ -25,6 +25,7 @@ ESRIShapeParser::ESRIShapeParser( const std::string fileName, bool useDouble ):
|
|||||||
if( (fd = open( fileName.c_str(), O_RDONLY )) <= 0 )
|
if( (fd = open( fileName.c_str(), O_RDONLY )) <= 0 )
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
if (fd) close ( fd );
|
||||||
perror( fileName.c_str() );
|
perror( fileName.c_str() );
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
@ -93,7 +93,8 @@ XBaseParser::XBaseParser(const std::string fileName):
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
perror( fileName.c_str() );
|
perror( fileName.c_str() );
|
||||||
return ;
|
if (fd) close( fd );
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3147,17 +3147,18 @@ unzFile unzOpenInternal(LUFILE *fin)
|
|||||||
// return UNZ_OK if there is no problem.
|
// return UNZ_OK if there is no problem.
|
||||||
int unzClose (unzFile file)
|
int unzClose (unzFile file)
|
||||||
{
|
{
|
||||||
unz_s* s;
|
|
||||||
if (file==NULL)
|
if (file==NULL)
|
||||||
return UNZ_PARAMERROR;
|
return UNZ_PARAMERROR;
|
||||||
s=(unz_s*)file;
|
|
||||||
|
unz_s* s=(unz_s*)file;
|
||||||
|
|
||||||
if (s->pfile_in_zip_read!=NULL)
|
if (s->pfile_in_zip_read!=NULL)
|
||||||
unzCloseCurrentFile(file);
|
unzCloseCurrentFile(file);
|
||||||
|
|
||||||
lufclose(s->file);
|
lufclose(s->file);
|
||||||
if (s) zfree(s); // unused s=0;
|
zfree(s);
|
||||||
return UNZ_OK;
|
return UNZ_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -4144,15 +4145,18 @@ ZRESULT TUnzip::Find(const TCHAR *tname,bool ic,int *index,ZIPENTRY *ze)
|
|||||||
void EnsureDirectory(const TCHAR *rootdir, const TCHAR *dir)
|
void EnsureDirectory(const TCHAR *rootdir, const TCHAR *dir)
|
||||||
{ // first check that rootdir exists. nb. rootdir has a trailing slash
|
{ // first check that rootdir exists. nb. rootdir has a trailing slash
|
||||||
if (rootdir!=0)
|
if (rootdir!=0)
|
||||||
{ TCHAR rd[MAX_PATH];
|
{ TCHAR rd[MAX_PATH+1];
|
||||||
|
|
||||||
#ifdef ZIP_STD
|
#ifdef ZIP_STD
|
||||||
strncpy(rd,rootdir,MAX_PATH);
|
strncpy(rd,rootdir,MAX_PATH);
|
||||||
#else
|
#else
|
||||||
_tcsncpy_s(rd,MAX_PATH,rootdir,MAX_PATH);
|
_tcsncpy_s(rd,MAX_PATH,rootdir,MAX_PATH);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// make sure there rd is always null terminated
|
||||||
|
rd[MAX_PATH] = 0;
|
||||||
|
|
||||||
size_t len=_tcslen(rd);
|
size_t len=_tcslen(rd);
|
||||||
if (len>0 && (rd[len-1]=='/' || rd[len-1]=='\\')) rd[len-1]=0;
|
if (len>0 && (rd[len-1]=='/' || rd[len-1]=='\\')) rd[len-1]=0;
|
||||||
#ifdef ZIP_STD
|
#ifdef ZIP_STD
|
||||||
if (!FileExists(rd)) lumkdir(rd);
|
if (!FileExists(rd)) lumkdir(rd);
|
||||||
|
@ -328,7 +328,7 @@ osg::BoundingBox MinimalCullBoundsShadowMap::ViewData::ComputeRenderLeavesBounds
|
|||||||
// Don't trust already computed bounds for cull generated drawables
|
// Don't trust already computed bounds for cull generated drawables
|
||||||
// LightPointDrawable & LightPointSpriteDrawable are such examples
|
// LightPointDrawable & LightPointSpriteDrawable are such examples
|
||||||
// they store wrong recorded bounds from very first pass
|
// they store wrong recorded bounds from very first pass
|
||||||
if( rl && rl->_modelview == NULL )
|
if(rl->_modelview == NULL )
|
||||||
rl->_drawable->dirtyBound();
|
rl->_drawable->dirtyBound();
|
||||||
|
|
||||||
bb = rl->_drawable->getBound();
|
bb = rl->_drawable->getBound();
|
||||||
|
@ -606,9 +606,10 @@ ScreenCaptureHandler::CaptureOperation* ScreenCaptureHandler::getCaptureOperatio
|
|||||||
void ScreenCaptureHandler::addCallbackToViewer(osgViewer::ViewerBase& viewer)
|
void ScreenCaptureHandler::addCallbackToViewer(osgViewer::ViewerBase& viewer)
|
||||||
{
|
{
|
||||||
osg::Camera* camera = findAppropriateCameraForCallback(viewer);
|
osg::Camera* camera = findAppropriateCameraForCallback(viewer);
|
||||||
|
if (!camera) return;
|
||||||
|
|
||||||
WindowCaptureCallback* callback = static_cast<WindowCaptureCallback*>(_callback.get());
|
WindowCaptureCallback* callback = static_cast<WindowCaptureCallback*>(_callback.get());
|
||||||
if (camera && callback->getFramePosition() == WindowCaptureCallback::START_FRAME)
|
if (callback && callback->getFramePosition() == WindowCaptureCallback::START_FRAME)
|
||||||
{
|
{
|
||||||
camera->setInitialDrawCallback(_callback.get());
|
camera->setInitialDrawCallback(_callback.get());
|
||||||
}
|
}
|
||||||
@ -621,9 +622,10 @@ void ScreenCaptureHandler::addCallbackToViewer(osgViewer::ViewerBase& viewer)
|
|||||||
void ScreenCaptureHandler::removeCallbackFromViewer(osgViewer::ViewerBase& viewer)
|
void ScreenCaptureHandler::removeCallbackFromViewer(osgViewer::ViewerBase& viewer)
|
||||||
{
|
{
|
||||||
osg::Camera* camera = findAppropriateCameraForCallback(viewer);
|
osg::Camera* camera = findAppropriateCameraForCallback(viewer);
|
||||||
|
if (!camera) return;
|
||||||
|
|
||||||
WindowCaptureCallback* callback = static_cast<WindowCaptureCallback*>(_callback.get());
|
WindowCaptureCallback* callback = static_cast<WindowCaptureCallback*>(_callback.get());
|
||||||
if (camera && callback->getFramePosition() == WindowCaptureCallback::START_FRAME)
|
if (callback && callback->getFramePosition() == WindowCaptureCallback::START_FRAME)
|
||||||
{
|
{
|
||||||
camera->setInitialDrawCallback(0);
|
camera->setInitialDrawCallback(0);
|
||||||
}
|
}
|
||||||
|
@ -207,6 +207,7 @@ void Locator::removeCallback(LocatorCallback* callback)
|
|||||||
if (*itr == callback)
|
if (*itr == callback)
|
||||||
{
|
{
|
||||||
_locatorCallbacks.erase(itr);
|
_locatorCallbacks.erase(itr);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -269,16 +269,6 @@ void RayTracedTechnique::init()
|
|||||||
osg::ref_ptr<osg::Texture1D> tf_texture = new osg::Texture1D;
|
osg::ref_ptr<osg::Texture1D> tf_texture = new osg::Texture1D;
|
||||||
tf_texture->setImage(tf->getImage());
|
tf_texture->setImage(tf->getImage());
|
||||||
|
|
||||||
#if 1
|
|
||||||
osgDB::writeImageFile(*(tf->getImage()),"tf.png");
|
|
||||||
OSG_NOTICE<<"imageLayer->getTexelOffset()[3]="<<imageLayer->getTexelOffset()[3]<<std::endl;
|
|
||||||
OSG_NOTICE<<"imageLayer->getTexelScale()[3]="<<imageLayer->getTexelScale()[3]<<std::endl;
|
|
||||||
OSG_NOTICE<<"tfOffset="<<tfOffset<<std::endl;
|
|
||||||
OSG_NOTICE<<"tfScale="<<tfScale<<std::endl;
|
|
||||||
OSG_NOTICE<<"tf->getMinimum()="<<tf->getMinimum()<<std::endl;
|
|
||||||
OSG_NOTICE<<"tf->getMaximum()="<<tf->getMaximum()<<std::endl;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
tf_texture->setResizeNonPowerOfTwoHint(false);
|
tf_texture->setResizeNonPowerOfTwoHint(false);
|
||||||
tf_texture->setFilter(osg::Texture::MIN_FILTER, osg::Texture::LINEAR);
|
tf_texture->setFilter(osg::Texture::MIN_FILTER, osg::Texture::LINEAR);
|
||||||
tf_texture->setFilter(osg::Texture::MAG_FILTER, osg::Texture::LINEAR);
|
tf_texture->setFilter(osg::Texture::MAG_FILTER, osg::Texture::LINEAR);
|
||||||
|
@ -25,7 +25,7 @@ static bool readData( osgDB::InputStream& is, osg::ShaderBinary& sb )
|
|||||||
is >> osgDB::END_BRACKET;
|
is >> osgDB::END_BRACKET;
|
||||||
}
|
}
|
||||||
sb.assign( size, (unsigned char*)data );
|
sb.assign( size, (unsigned char*)data );
|
||||||
delete data;
|
delete [] data;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user