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