LONG_MIN=-9,223,372,036,854,775,808 LONG_MAX=9,223,372,036,854,775,807

when if (value < LONG_MIN || value > LONG_MAX) is True?

int getLongFromObjectOrReply(client c, robj o, long target, const char msg) { long long value;

if (getLongLongFromObjectOrReply(c, o, &value, msg) != C_OK) return C_ERR;
if (value < LONG_MIN || value > LONG_MAX) {
    if (msg != NULL) {
        addReplyError(c,(char*)msg);
    } else {
        addReplyError(c,"value is out of range");
    }
    return C_ERR;
}
*target = value;
return C_OK;

}

Comment From: sundb

in 32bit system long is 32bit and long long is 64bit.

Comment From: zkteco-home

int string2l(const char s, size_t slen, long lval) { long long llval;

if (!string2ll(s,slen,&llval))
    return 0;

if (llval < LONG_MIN || llval > LONG_MAX)
    return 0;

*lval = (long)llval;
return 1;

}

it means it is useless in 64bit