static intset intsetUpgradeAndAdd(intset is, int64_t value) {
int prepend = value < 0 ? 1 : 0;
is = intsetResize(is,intrev32ifbe(is->length)+1);
while(length--)
_intsetSet(is,length+prepend,_intsetGetEncoded(is,length,curenc));
if (prepend)
_intsetSet(is,0,value);
else
_intsetSet(is,intrev32ifbe(is->length),value);
重新申请的数组大小为length+1的数组元素,假如prepend为1,_intsetSet函数访问了下标为length+1的数组元素,最多应该只能访问下标为length的元素吧?
因为你没贴出的代码上面有一个 resetsize的操作,已经+1了,所以不会越界。
关键点:
所有代码: