#1108. Correction to r4285. Code simplication.

v0.27.3
Robin Mills 9 years ago
parent ae17a16bea
commit 06b072e39b

@ -523,15 +523,14 @@ namespace Exiv2 {
: 1
;
// if ( offset > io.size() ) offset = 0; // Denial of service?
// if ( offset > io.size() ) offset = 0; // Denial of service?
DataBuf buf(MIN(size*kount + pad,48)); // allocate a buffer
if ( (isStringType(type) && count*size > 4) || count*size > 4 ) { // read into buffer
std::memcpy(buf.pData_,dir.pData_+8,4); // copy dir[8:11] into buffer (short strings)
if ( count*size > 4 ) { // read into buffer
size_t restore = io.tell(); // save
io.seek(offset,BasicIo::beg); // position
io.read(buf.pData_,kount*size);// read
io.seek(restore,BasicIo::beg); // restore
} else { // move data from directory into buffer
std::memcpy(buf.pData_,dir.pData_+8,4);
}
uint32_t Offset = isLongType(type) ? byteSwap4(buf,0,bSwap) : 0 ;

Loading…
Cancel
Save