Nodes will only accept and relay the first transaction that it sees that spends those inputs. Larry would need to spend the same inputs twice. Most nodes that see the first transaction will reject the second one since it spends the same inputs twice. It is part of the relaying rules. Miners also follow these rules. When they see a double spend, they go with the version that came first. Due to the network speed, Larry would not be able to do the common Race Attack. That would require him to be at both stores at once and send both transactions at the same time. Due to the network propagation, the first transaction sent will reach most of the network before Larry can even leave the first store.
Also, most businesses and business deals should only go through after a few confirmations. This ensures that the transaction cannot be double spent. The computer store would be very idiotic to let unconfirmed transactions to happen.
The rules are for reference implementation. People can modify it themselves, whether to relay double spend transactions or not. Do note that a miner can accept the replacement transaction if they want to, the entire network would then accept that transaction.But it is not possible for two transactions spending the same output to get confirmations as majority of the network would reject that.
Zero confirmations are not always safe.IMO, it is okay to allow small transactions to go through if you connect to peers at different geographical locations, make sure big pools are accepting the transaction, inputs are already confirmed and a good fee per kilobyte has been used.