Fix crash (deleting garbage ptr) when nonexisting file passed to IfcSpfStream ctor. Bug surfaced due to recent memory leak fix.

This commit is contained in:
Stinkfist0
2016-03-05 00:40:08 +02:00
parent 84e7a86e77
commit e35cefac52
+13 -4
View File
@@ -69,7 +69,10 @@ void init_locale() {
// //
// Opens the file, gets the filesize and reads a chunk in memory // Opens the file, gets the filesize and reads a chunk in memory
// //
IfcSpfStream::IfcSpfStream(const std::string& fn) { IfcSpfStream::IfcSpfStream(const std::string& fn)
: stream(0)
, buffer(0)
{
eof = false; eof = false;
#ifdef _MSC_VER #ifdef _MSC_VER
int fn_buffer_size = MultiByteToWideChar(CP_UTF8, 0, fn.c_str(), -1, 0, 0); int fn_buffer_size = MultiByteToWideChar(CP_UTF8, 0, fn.c_str(), -1, 0, 0);
@@ -86,7 +89,7 @@ IfcSpfStream::IfcSpfStream(const std::string& fn) {
} }
valid = true; valid = true;
fseek(stream, 0, SEEK_END); fseek(stream, 0, SEEK_END);
size = (unsigned int) ftell(stream);; size = (unsigned int) ftell(stream);
rewind(stream); rewind(stream);
#ifdef BUF_SIZE #ifdef BUF_SIZE
offset = 0; offset = 0;
@@ -100,7 +103,10 @@ IfcSpfStream::IfcSpfStream(const std::string& fn) {
ReadBuffer(false); ReadBuffer(false);
} }
IfcSpfStream::IfcSpfStream(std::istream& f, int l) { IfcSpfStream::IfcSpfStream(std::istream& f, int l)
: stream(0)
, buffer(0)
{
eof = false; eof = false;
size = l; size = l;
#ifdef BUF_SIZE #ifdef BUF_SIZE
@@ -114,7 +120,10 @@ IfcSpfStream::IfcSpfStream(std::istream& f, int l) {
len = l; len = l;
} }
IfcSpfStream::IfcSpfStream(void* data, int l) { IfcSpfStream::IfcSpfStream(void* data, int l)
: stream(0)
, buffer(0)
{
eof = false; eof = false;
size = l; size = l;
#ifdef BUF_SIZE #ifdef BUF_SIZE