¿Por qué reimplement strlen como loop + sustracción?

Inspirado poresta pregunt sobre el siguiente código de SQLite3:

 static int strlen30(const char *z){
    const char *z2 = z;
    while( *z2 ){ z2++; }
    return 0x3fffffff & (int)(z2 - z);
 }

que se acompaña de unacommitir mensaje decir que esta función ayuda conint desbordamientos.

Estoy particularmente interesado en esta parte:

 const char *z2 = z;
 while( *z2 ){ z2++; }

to me avanza este buclez2 hastaz2 apunta al terminador nulo. Luegoz2-z produce la longitud de la cadena.

Por qué no usarstrlen() para esta parte y reescribir así:

return 0x3fffffff & (int)(strlen(z));

Por qué usar bucle + resta en lugar destrlen()? ¿Qué puede hacer loop + resta hacer lo questrlen() no puede

Respuestas a la pregunta(2)

Su respuesta a la pregunta