Place the following test into `PuppyRaffleTest.t.sol`.
```solidity
function test_feeAddressZero_burnsWithdrawnFees() public {
PuppyRaffle raffle = new PuppyRaffle(1 ether, address(0), 0);
address[] memory players = new address[](4);
players[0] = address(1);
players[1] = address(2);
players[2] = address(3);
players[3] = address(4);
vm.deal(address(this), 4 ether);
raffle.enterRaffle{value: 4 ether}(players);
raffle.selectWinner();
uint256 zeroBefore = address(0).balance;
raffle.withdrawFees();
assertEq(address(0).balance, zeroBefore + 0.8 ether);
}
```
Add `address(0)` checks in both constructor and `changeFeeAddress()`.
```diff
constructor(uint256 _entranceFee, address _feeAddress, uint256 _raffleDuration) ERC721("Puppy Raffle", "PR") {
entranceFee = _entranceFee;
+ require(_feeAddress != address(0), "PuppyRaffle: feeAddress cannot be zero");
feeAddress = _feeAddress;
raffleDuration = _raffleDuration;
raffleStartTime = block.timestamp;
}
@@
function changeFeeAddress(address newFeeAddress) external onlyOwner {
+ require(newFeeAddress != address(0), "PuppyRaffle: feeAddress cannot be zero");
feeAddress = newFeeAddress;
emit FeeAddressChanged(newFeeAddress);
}
```