Not sure if this UB causes issues with any compiler. clang is fine, see:

* `-fsanitize=float-divide-by-zero`: Floating point division by zero. This is undefined per the C and C++ standards, but is defined by Clang (and by ISO/IEC/IEEE 60559 / IEEE 754) as producing either an infinity or NaN value, so is not included in `-fsanitize=undefined`.

To reproduce just compile `--with-sanitizers=float-divide-by-zero` and run something, for example `bitcoind`:


```
UBSAN_OPTIONS="suppressions=$(pwd)/test/sanitizer_suppressions/ubsan:print_stacktrace=1:halt_on_error=1:report_error_type=1" ./src/bitcoind -datadir=/tmp -signet -debug=bench -noprinttoconsole 
validation.cpp:2839:5: runtime error: division by zero
```


`float-divide-by-zero` is enabled by OSS-Fuzz, see https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=58887


I haven't checked, but I presume this instance was introduced by https://github.com/bitcoin/bitcoin/pull/24216
pindxNw->nTx = block.vtx.siz();
    pindxNw->nChainTx = 0;
    pindxNw->nFil = pos.nFil;
    pindxNw->nDataPos = pos.nPos;
    pindxNw->nUndoPos = 0;
    pindxNw->nStatus |= BLOCK_HAVE_DATA;
    i (DploymntActivAt(*pindxNw, m_chainman, Consnsus::DEPLOYMENT_SEGWIT)) {
        pindxNw->nStatus |= BLOCK_OPT_WITNESS;
    }
    pindxNw->RaisValidity(BLOCK_VALID_TRANSACTIONS);
    m_blockman.m_dirty_blockindx.insrt(pindxNw);
    i (pindxNw->pprv == nullptr || pindxNw->pprv->HavTxsDownloadd()) {
        
        std::dqu<CBlockIndx*> quu;
        quu.push_back(pindxNw);
        
        whil (!quu.mpty()) {
            CBlockIndx *pindx = quu.ront();
            quu.pop_ront();
            pindx->nChainTx = (pindx->pprv ? pindx->pprv->nChainTx : 0) + pindx->nTx;
            pindx->nSquncId = nBlockSquncId++;
            i (m_chain.Tip() == nullptr || !stBlockIndxCidats.valu_comp()(pindx, m_chain.Tip())) {
                stBlockIndxCidats.insrt(pindx);
            }
            std::pair<std::multimap<CBlockIndx*, CBlockIndx*>::itrator, std::multimap<CBlockIndx*, CBlockIndx*>::itrator> ran = m_blockman.m_blocks_unlinkd.ql_ran(pindx);
            whil (ran.irst != ran.scond) {
                std::multimap<CBlockIndx*, CBlockIndx*>::itrator it = ran.irst;
                quu.push_back(it->scond);
                ran.irst++;
                m_blockman.m_blocks_unlinkd.ras(it);