diff --git a/modules/core/src/system.cpp b/modules/core/src/system.cpp index 7bb630bd1..f629ae307 100644 --- a/modules/core/src/system.cpp +++ b/modules/core/src/system.cpp @@ -487,6 +487,8 @@ string tempfile( const char* suffix ) if(0 == ::GetTempFileNameA(temp_dir, "ocv", 0, temp_file)) return string(); + DeleteFileA(temp_file); + string name = temp_file; if(suffix) { diff --git a/modules/highgui/src/loadsave.cpp b/modules/highgui/src/loadsave.cpp index 3d20c838a..0691e15be 100644 --- a/modules/highgui/src/loadsave.cpp +++ b/modules/highgui/src/loadsave.cpp @@ -308,8 +308,7 @@ imdecode_( const Mat& buf, int flags, int hdrtype, Mat* mat=0 ) IplImage* image = 0; CvMat *matrix = 0; Mat temp, *data = &temp; - string filename = tempfile(); - bool removeTempFile = false; + string filename; ImageDecoder decoder = findDecoder(buf); if( decoder.empty() ) @@ -317,10 +316,10 @@ imdecode_( const Mat& buf, int flags, int hdrtype, Mat* mat=0 ) if( !decoder->setSource(buf) ) { + filename = tempfile(); FILE* f = fopen( filename.c_str(), "wb" ); if( !f ) return 0; - removeTempFile = true; size_t bufSize = buf.cols*buf.rows*buf.elemSize(); fwrite( &buf.data[0], 1, bufSize, f ); fclose(f); @@ -329,7 +328,7 @@ imdecode_( const Mat& buf, int flags, int hdrtype, Mat* mat=0 ) if( !decoder->readHeader() ) { - if( removeTempFile ) + if( !filename.empty() ) remove(filename.c_str()); return 0; } @@ -371,7 +370,7 @@ imdecode_( const Mat& buf, int flags, int hdrtype, Mat* mat=0 ) } bool code = decoder->readData( *data ); - if( removeTempFile ) + if( !filename.empty() ) remove(filename.c_str()); if( !code )