Skip to content

Unnecessary return of default value #75

Description

@PaulRBerg

SafeERC20Namer.tokenDecimals returns zero in case the decimals is not implemented by the provided token address:

https://github.com/yieldprotocol/yield-utils-v2/blob/dbeb85ac94befc477bf8cdff9f178fdf331eb83d/src/token/SafeERC20Namer.sol#L99-102

However, this is not necessary, because "0" is the implicit default value for uint8. You might be able to save a little bit of gas if you refactor the code like this:

- function tokenDecimals(address token) public view returns (uint8) {
+ function tokenDecimals(address token) public view returns (uint8 decimals) {
(bool success, bytes memory data) = token.staticcall(abi.encodeWithSelector(IERC20Metadata.decimals.selector));
- return success && data.length == 32 ? abi.decode(data, (uint8)) : 0;
+ if (success && data.length == 32) {
+     decimals = abi.decode(data, (uint8));
+ }

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions