Skip to content

Conversation

@james-a-johnson
Copy link
Contributor

@james-a-johnson james-a-johnson commented Oct 21, 2025

This fixes an error when a constant is being loaded into a flag. The constants associated with a flag value have their size set to zero. That causes the mask for the constant value to be all zeros. Due to that, getting the value of a zero sized constant will always return 0 even if it should be 1.

This commit special cases the size of zero to create a mask of 1 which will correctly mask off the lowest bit and return that as the constant.

This fixes an error when a constant is being loaded into a flag.
The constants associated with a flag value have their size set to zero.
That causes the mask for the constant value to be all zeros. Due to that,
getting the value of a zero sized constant will always return 0 even if
it should be 1.

This commit special cases the size of zero to create a mask of 1 which
will correctly mask off the lowest byte and return that as the constant.
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR fixes a bug in the mask calculation for constant values with zero size, which prevented correct retrieval of flag constant values. The fix special-cases size zero to return a mask of 1, ensuring the lowest byte is correctly extracted.

Key Changes

  • Modified mask calculation logic to handle zero-sized constants by returning a mask value of 1
  • Refactored the mask calculation from mutable variable assignment to an immutable conditional expression

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

mask = !mask;
}
let mask: u64 = if self.op.size == 0 {
1
Copy link

Copilot AI Oct 28, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A mask of 1 will only preserve the least significant bit, not the lowest byte. To correctly mask the lowest byte as described in the PR description, the mask should be 0xFF (255) instead of 1.

Suggested change
1
0xFF

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice catch. That is a bug in the wording of my MR message though and not the actual code.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants