allow using approve/_approve to clean approval
This commit is contained in:
@ -114,9 +114,10 @@ abstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Er
|
|||||||
*/
|
*/
|
||||||
function approve(address to, uint256 tokenId) public virtual {
|
function approve(address to, uint256 tokenId) public virtual {
|
||||||
address owner = ownerOf(tokenId);
|
address owner = ownerOf(tokenId);
|
||||||
|
address caller = _msgSender();
|
||||||
|
|
||||||
if (_msgSender() != owner && !isApprovedForAll(owner, _msgSender())) {
|
if (owner != caller && !isApprovedForAll(owner, caller)) {
|
||||||
revert ERC721InvalidApprover(_msgSender());
|
revert ERC721InvalidApprover(caller);
|
||||||
}
|
}
|
||||||
|
|
||||||
_approve(to, tokenId);
|
_approve(to, tokenId);
|
||||||
@ -390,7 +391,7 @@ abstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Er
|
|||||||
*/
|
*/
|
||||||
function _approve(address to, uint256 tokenId) internal virtual {
|
function _approve(address to, uint256 tokenId) internal virtual {
|
||||||
address owner = ownerOf(tokenId);
|
address owner = ownerOf(tokenId);
|
||||||
if (to == owner || to == address(0)) {
|
if (to == owner) {
|
||||||
revert ERC721InvalidOperator(to);
|
revert ERC721InvalidOperator(to);
|
||||||
}
|
}
|
||||||
_tokenApprovals[tokenId] = to;
|
_tokenApprovals[tokenId] = to;
|
||||||
|
|||||||
Reference in New Issue
Block a user