Why not use overflow-free varsion check?

Hi,everyone.
I am use vs2017 c/c + + Code Analysis tools to check objects/longobject.c, then it tells that in double _PyLong_Frexp(PyLongObject *a, Py_ssize_t *e), may cause writing overflow:

警告	C6386	写入到“x_digits”时缓冲区溢出: 可写大小为“10”个字节,但可能写入了“286331156”个字节。	pythoncore	e:\cpython3.7\cpython\objects\longobject.c	2854	活动的

But i notice that in code, writer give a overflow-free version check, so I wondor why use this version? I don’t quite understand the meaning of the note, and I not find related documents or blogs.

 a_bits = bits_in_digit(a->ob_digit[a_size-1]);
    /* The following is an overflow-free version of the check 
       "if ((a_size - 1) * PyLong_SHIFT + a_bits > PY_SSIZE_T_MAX) ..." */
    if (a_size >= (PY_SSIZE_T_MAX - 1) / PyLong_SHIFT + 1 &&
        (a_size > (PY_SSIZE_T_MAX - 1) / PyLong_SHIFT + 1 ||
         a_bits > (PY_SSIZE_T_MAX - 1) % PyLong_SHIFT + 1))
        goto overflow;
    a_bits = (a_size - 1) * PyLong_SHIFT + a_bits;