Quick hack to fix a bug. error status 7777 was never meant to be exposed outside. Just fix the size by changing it to 77 or some other unique value that won't ever be set between the set and check in that method.




Daniel Glassey wrote:
Hi,
I'm looking into some of the compiler warnings and am curious about what is going on in this method - error is a char so why is it being set to 7777?
gcc complains that this expression will always be false
error = (error == 7777) ? KEYERR_OUTOFBOUNDS : 0;

Regards,
Daniel


char TreeKeyIdx::getTreeNodeFromIdxOffset(long ioffset, TreeNode *node) const {
__u32 offset;
char error = KEYERR_OUTOFBOUNDS;

if (ioffset < 0) {
ioffset = 0;
error = 7777; // out of bounds but still position to 0;
}

node->offset = ioffset;
if (idxfd > 0) {
if (idxfd->getFd() > 0) {
lseek(idxfd->getFd(), ioffset, SEEK_SET);
if (read(idxfd->getFd(), &offset, 4) == 4) {
offset = swordtoarch32(offset);
error = (error == 7777) ? KEYERR_OUTOFBOUNDS : 0;
getTreeNodeFromDatOffset(offset, node);
}
else {
lseek(idxfd->getFd(), -4, SEEK_END);
if (read(idxfd->getFd(), &offset, 4) == 4) {
offset = swordtoarch32(offset);
getTreeNodeFromDatOffset(offset, node);
}
}
}
}
return error;
}



Reply via email to