Some ERC-20s (USDT, BNB legacy) return no boolean or return false instead of reverting. Calling transfer/transferFrom without SafeERC20 lets a non-reverting failed transfer pass, breaking accounting.
using SafeERC20 for IERC20; token.safeTransferFrom(msg.sender, address(this), amt);
Largest recorded losses in the same failure class — related, not the same bug:
The SaferICO scanner runs 201 detectors over your Solidity source, SAFE-0027 among them. Paste an address or the source itself — a small per-scan fee, shown before you sign, or unlimited on any plan.