Optimize ERC721 _isApprovedOrOwner function (#3248)

This commit is contained in:
Amirhossein Banavi
2022-03-09 00:48:56 +03:30
committed by GitHub
parent f8bfa560e9
commit 62eb4568be

View File

@ -232,7 +232,7 @@ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
require(_exists(tokenId), "ERC721: operator query for nonexistent token"); require(_exists(tokenId), "ERC721: operator query for nonexistent token");
address owner = ERC721.ownerOf(tokenId); address owner = ERC721.ownerOf(tokenId);
return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);
} }
/** /**