Commit ecbb00a1 authored by ElenaSubbotina's avatar ElenaSubbotina Committed by Alexander Trofimov

DocFormatReader ...

parent 7b813670
...@@ -1259,7 +1259,7 @@ namespace DocFileFormat ...@@ -1259,7 +1259,7 @@ namespace DocFileFormat
{ {
//it's a bitmap image //it's a bitmap image
BitmapBlip* bitBlip = static_cast<BitmapBlip*>(RecordFactory::ReadRecord(&reader, 0)); BitmapBlip* bitBlip = static_cast<BitmapBlip*>(RecordFactory::ReadRecord(&reader, 0));
if (bitBlip) if ((bitBlip) && (bitBlip->m_pvBits))
{ {
m_ctx->_docx->ImagesList.push_back(ImageFileStructure(GetTargetExt(oBlip->btWin32), m_ctx->_docx->ImagesList.push_back(ImageFileStructure(GetTargetExt(oBlip->btWin32),
vector<unsigned char>(bitBlip->m_pvBits, (bitBlip->m_pvBits + bitBlip->pvBitsSize)), oBlip->btWin32)); vector<unsigned char>(bitBlip->m_pvBits, (bitBlip->m_pvBits + bitBlip->pvBitsSize)), oBlip->btWin32));
......
...@@ -27,7 +27,7 @@ public: ...@@ -27,7 +27,7 @@ public:
{ {
unsigned short rdUShort = 0; unsigned short rdUShort = 0;
if ( stream != NULL ) if ( (stream != NULL) && (position + 2 < stream->size()))
{ {
stream->seek( position ); stream->seek( position );
stream->read((unsigned char*)(&rdUShort), sizeof( rdUShort )); stream->read((unsigned char*)(&rdUShort), sizeof( rdUShort ));
...@@ -42,7 +42,7 @@ public: ...@@ -42,7 +42,7 @@ public:
{ {
short rdShort = 0; short rdShort = 0;
if ( stream != NULL ) if ( (stream != NULL) && (position + 2 < stream->size()))
{ {
stream->seek( position ); stream->seek( position );
stream->read((unsigned char*)(&rdShort), sizeof( rdShort )); stream->read((unsigned char*)(&rdShort), sizeof( rdShort ));
...@@ -57,7 +57,7 @@ public: ...@@ -57,7 +57,7 @@ public:
{ {
int rdInt = 0; int rdInt = 0;
if ( stream != NULL ) if ( (stream != NULL) && (position + 4 < stream->size()))
{ {
stream->seek( position ); stream->seek( position );
stream->read( (unsigned char*) &rdInt, sizeof( rdInt ) ); stream->read( (unsigned char*) &rdInt, sizeof( rdInt ) );
...@@ -72,7 +72,7 @@ public: ...@@ -72,7 +72,7 @@ public:
{ {
int rdUInt = 0; int rdUInt = 0;
if ( stream != NULL ) if ( (stream != NULL) && (position + 4 < stream->size()))
{ {
stream->seek( position ); stream->seek( position );
stream->read((unsigned char*) &rdUInt, sizeof( rdUInt ) ); stream->read((unsigned char*) &rdUInt, sizeof( rdUInt ) );
...@@ -87,7 +87,7 @@ public: ...@@ -87,7 +87,7 @@ public:
{ {
unsigned char rdByte = 0; unsigned char rdByte = 0;
if ( this->stream != NULL ) if ( (stream != NULL) && (position + 1 < stream->size()))
{ {
stream->seek( position); stream->seek( position);
stream->read( (unsigned char*)&rdByte, sizeof( rdByte ) ); stream->read( (unsigned char*)&rdByte, sizeof( rdByte ) );
...@@ -102,7 +102,7 @@ public: ...@@ -102,7 +102,7 @@ public:
{ {
unsigned char *rdBytes = NULL; unsigned char *rdBytes = NULL;
if ( ( stream != NULL ) && ( count > 0 ) ) if ( ( stream != NULL ) && ( count > 0 ) && (position + count < stream->size()))
{ {
rdBytes = new unsigned char[count]; rdBytes = new unsigned char[count];
...@@ -221,7 +221,6 @@ public: ...@@ -221,7 +221,6 @@ public:
private: private:
POLE::uint64 position; POLE::uint64 position;
//std::streampos position;
POLE::Stream* stream; POLE::Stream* stream;
}; };
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment