Fixed isEpsType() to use DataBuf instead of a local allocation on the stack

v0.27.3
vog 14 years ago
parent 8bd69f7c46
commit 11f52679c5

@ -1074,15 +1074,14 @@ namespace Exiv2
bufSize = epsFirstLine[i].size(); bufSize = epsFirstLine[i].size();
} }
} }
byte buf[bufSize]; DataBuf buf = iIo.read(bufSize);
iIo.read(buf, bufSize);
if (iIo.error() || iIo.eof()) { if (iIo.error() || iIo.eof()) {
return false; return false;
} }
// check for all possible (DOS) EPS signatures // check for all possible (DOS) EPS signatures
bool matched = (memcmp(buf, dosEpsSignature.data(), dosEpsSignature.size()) == 0); bool matched = (memcmp(buf.pData_, dosEpsSignature.data(), dosEpsSignature.size()) == 0);
for (size_t i = 0; !matched && i < (sizeof epsFirstLine) / (sizeof *epsFirstLine); i++) { for (size_t i = 0; !matched && i < (sizeof epsFirstLine) / (sizeof *epsFirstLine); i++) {
matched = (memcmp(buf, epsFirstLine[i].data(), epsFirstLine[i].size()) == 0); matched = (memcmp(buf.pData_, epsFirstLine[i].data(), epsFirstLine[i].size()) == 0);
} }
// seek back if possible and requested // seek back if possible and requested
if (!advance || !matched) { if (!advance || !matched) {

Loading…
Cancel
Save