Commit e8d744a9 by github-actions

Merge upstream openzeppelin-contracts into upstream-patched

parents bce31dee eea37691
...@@ -102,7 +102,7 @@ abstract contract AccessControl is Context, IAccessControl, ERC165 { ...@@ -102,7 +102,7 @@ abstract contract AccessControl is Context, IAccessControl, ERC165 {
* *
* The format of the revert reason is given by the following regular expression: * The format of the revert reason is given by the following regular expression:
* *
* /^AccessControl: account (0x[0-9a-f]{20}) is missing role (0x[0-9a-f]{32})$/ * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/
* *
* _Available since v4.1._ * _Available since v4.1._
*/ */
...@@ -130,7 +130,7 @@ abstract contract AccessControl is Context, IAccessControl, ERC165 { ...@@ -130,7 +130,7 @@ abstract contract AccessControl is Context, IAccessControl, ERC165 {
* *
* The format of the revert reason is given by the following regular expression: * The format of the revert reason is given by the following regular expression:
* *
* /^AccessControl: account (0x[0-9a-f]{20}) is missing role (0x[0-9a-f]{32})$/ * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/
*/ */
function _checkRole(bytes32 role, address account) internal view { function _checkRole(bytes32 role, address account) internal view {
if (!hasRole(role, account)) { if (!hasRole(role, account)) {
...@@ -230,8 +230,9 @@ abstract contract AccessControl is Context, IAccessControl, ERC165 { ...@@ -230,8 +230,9 @@ abstract contract AccessControl is Context, IAccessControl, ERC165 {
* Emits a {RoleAdminChanged} event. * Emits a {RoleAdminChanged} event.
*/ */
function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
emit RoleAdminChanged(role, getRoleAdmin(role), adminRole); bytes32 previousAdminRole = getRoleAdmin(role);
_roles[role].adminRole = adminRole; _roles[role].adminRole = adminRole;
emit RoleAdminChanged(role, previousAdminRole, adminRole);
} }
function _grantRole(bytes32 role, address account) private { function _grantRole(bytes32 role, address account) private {
......
...@@ -107,10 +107,10 @@ abstract contract ERC20Votes is ERC20Permit { ...@@ -107,10 +107,10 @@ abstract contract ERC20Votes is ERC20Permit {
function _checkpointsLookup(Checkpoint[] storage ckpts, uint256 blockNumber) private view returns (uint256) { function _checkpointsLookup(Checkpoint[] storage ckpts, uint256 blockNumber) private view returns (uint256) {
// We run a binary search to look for the earliest checkpoint taken after `blockNumber`. // We run a binary search to look for the earliest checkpoint taken after `blockNumber`.
// //
// During the loop, the index of the wanted checkpoint remains in the range [low, high). // During the loop, the index of the wanted checkpoint remains in the range [low-1, high).
// With each iteration, either `low` or `high` is moved towards the middle of the range to maintain the invariant. // With each iteration, either `low` or `high` is moved towards the middle of the range to maintain the invariant.
// - If the middle checkpoint is after `blockNumber`, we look in [low, mid) // - If the middle checkpoint is after `blockNumber`, we look in [low, mid)
// - If the middle checkpoint is before `blockNumber`, we look in [mid+1, high) // - If the middle checkpoint is before or equal to `blockNumber`, we look in [mid+1, high)
// Once we reach a single value (when low == high), we've found the right checkpoint at the index high-1, if not // Once we reach a single value (when low == high), we've found the right checkpoint at the index high-1, if not
// out of bounds (in which case we're looking too far in the past and the result is 0). // out of bounds (in which case we're looking too far in the past and the result is 0).
// Note that if the latest checkpoint available is exactly for `blockNumber`, we end up with an index that is // Note that if the latest checkpoint available is exactly for `blockNumber`, we end up with an index that is
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment