A deposit/withdraw/transfer/mint function does not reject a zero amount. Zero-value calls waste gas, can emit misleading events, and in accounting systems can trigger divide-by-zero or share-price edge cases.
// deposit(0) emits Deposit(user, 0) and, in a vault, shares = 0*supply/assets // -> 0 shares minted but an event/log implies a real deposit; also a // division that assumes amount>0 can revert or misbehave.
require(amount > 0, "zero amount");
Largest recorded losses in the same failure class — related, not the same bug:
The SaferICO scanner runs 201 detectors over your Solidity source, SAFE-0304 among them. Paste an address or the source itself — a small per-scan fee, shown before you sign, or unlimited on any plan.