From e6f48efe78174269f8f3612bf1132000033fdf79 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Mon, 15 Jul 2002 11:44:21 +0000 Subject: [PATCH] Fixed memory leak in FieldReaderIterator.cpp. Updated the Make/osgtests.bat and Make/debugtests.bat scripts. --- Make/debugtests.bat | 32 +++++++--- Make/osgtests.bat | 97 +++++++++++++++++++++---------- src/osgDB/FieldReaderIterator.cpp | 7 +++ 3 files changed, 96 insertions(+), 40 deletions(-) diff --git a/Make/debugtests.bat b/Make/debugtests.bat index d5743922a..d5c0a9cf9 100755 --- a/Make/debugtests.bat +++ b/Make/debugtests.bat @@ -1,3 +1,11 @@ +echo osgversion +osgversion +more memleaks.log + +echo sgv osgcool.osg +sgv osgcool.osg +more memleaks.log + echo sgv cow.osg sgv cow.osg more memleaks.log @@ -6,6 +14,14 @@ echo sgv -stereo cessna.osg sgv -stereo cessna.osg more memleaks.log +echo sgv cessnafire.osg +sgv cessnafire.osg +more memleaks.log + +echo sgv spaceship.osg +sgv spaceship.osg +more memleaks.log + echo sgv Town.osg sgv Town.osg more memleaks.log @@ -14,12 +30,12 @@ echo osghangglide osghangglide more memleaks.log -echo osggeometry cow.osg -osggeometry cow.osg +echo osggeometry +osggeometry more memleaks.log -echo osgprerender cow.osg -osgprerender cow.osg +echo osgprerender dumptruck.osg +osgprerender dumptruck.osg more memleaks.log echo osgparticle cow.osg @@ -46,6 +62,10 @@ echo osgimpostor Town.osg osgimpostor Town.osg more memleaks.log +echo osgmultitexture cessnafire.osg +osmultitexture cessnafire.osg +more memleaks.log + echo osgreflect cow.osg osgreflect cow.osg more memleaks.log @@ -66,10 +86,6 @@ echo osgtexture reflect.rgb lz.rgb osgtexture reflect.rgb lz.rgb more memleaks.log -echo osgversion -osgversion -more memleaks.log - echo osgviews cow.osg osgviews cow.osg more memleaks.log diff --git a/Make/osgtests.bat b/Make/osgtests.bat index 49bbc4edb..516483668 100755 --- a/Make/osgtests.bat +++ b/Make/osgtests.bat @@ -1,35 +1,68 @@ -sgv cow.osg -sgv -stereo cessna.osg -sgv Town.osg - -osghangglide - -osggeometry cow.osg - -osgprerender cow.osg - -osgparticle cow.osg - -osgbillboard lz.rgb - -osgcube - -osgclip cow.osg - -osghud glider.osg - -osgimpostor Town.osg - -osgreflect cow.osg - -osgscribe cow.osg - -osgstereoimage dog_left_eye.jpg dog_right_eye.jpg - -osgtext - -osgtexture reflect.rgb lz.rgb - +echo osgversion osgversion +echo sgv osgcool.osg +sgv osgcool.osg + +echo sgv cow.osg +sgv cow.osg + +echo sgv -stereo cessna.osg +sgv -stereo cessna.osg + +echo sgv cessnafire.osg +sgv cessnafire.osg + +echo sgv spaceship.osg +sgv spaceship.osg + +echo sgv Town.osg +sgv Town.osg + +echo osghangglide +osghangglide + +echo osggeometry +osggeometry + +echo osgprerender dumptruck.osg +osgprerender dumptruck.osg + +echo osgparticle cow.osg +osgparticle cow.osg + +echo osgbillboard lz.rgb +osgbillboard lz.rgb + +echo osgcube +osgcube + +echo osgclip +osgclip cow.osg + +echo osghud glider.osg +osghud glider.osg + +echo osgimpostor Town.osg +osgimpostor Town.osg + +echo osgmultitexture cessnafire.osg +osgmultitexture cessnafire.osg + +echo osgreflect cow.osg +osgreflect cow.osg + +echo osgscribe cow.osg +osgscribe cow.osg + +echo osgstereoimage dog_left_eye.jpg dog_right_eye.jpg +osgstereoimage dog_left_eye.jpg dog_right_eye.jpg + +echo osgtext +osgtext + +echo osgtexture reflect.rgb lz.rgb +osgtexture reflect.rgb lz.rgb + +echo osgviews cow.osg osgviews cow.osg diff --git a/src/osgDB/FieldReaderIterator.cpp b/src/osgDB/FieldReaderIterator.cpp index 8fc9ff1cb..a2da6a9d6 100644 --- a/src/osgDB/FieldReaderIterator.cpp +++ b/src/osgDB/FieldReaderIterator.cpp @@ -137,6 +137,10 @@ void FieldReaderIterator::insert(int pos,Field* field) { newFieldStack[i] = NULL; } + + // free the old memory. + osgDelete [] _fieldQueue; + _fieldQueue = newFieldStack; _fieldQueueCapacity = newCapacity; } @@ -200,6 +204,9 @@ Field& FieldReaderIterator::field (int pos) { newFieldStack[i] = NULL; } + // free the old memory. + osgDelete [] _fieldQueue; + _fieldQueue = newFieldStack; _fieldQueueCapacity = newCapacity; }