-
-
Notifications
You must be signed in to change notification settings - Fork 116
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix null pointer error in a psyqo cube template #1842
Conversation
The first parameter of four parameter method generateRotationMatrix33 expects a pointer to a Matrix33. When a 0 is passed, it is interpreted as a null pointer that is later dereferenced to set the matrix and that causes an error.
WalkthroughThe pull request modifies the Changes
Poem
Finishing Touches
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (2)
tools/vscode-extension/templates/psyqo/cube/main.cpp (2)
128-128
: Consider improving code clarity and safety.While the fix is correct, consider these improvements for better code clarity and safety:
- Add a comment explaining why the angle is 0 (presumably for no Z-axis rotation)
- Consider using a constant or named variable for the angle to make the intent clearer
+ // No rotation around Z-axis needed, but matrix must be initialized + const auto zRotationAngle = 0; - psyqo::SoftMath::generateRotationMatrix33(&rot, 0, psyqo::SoftMath::Axis::Z, cube.m_trig); + psyqo::SoftMath::generateRotationMatrix33(&rot, zRotationAngle, psyqo::SoftMath::Axis::Z, cube.m_trig);
126-131
: Consider improving matrix handling clarity.The current code reuses the
rot
variable for different purposes and the matrix multiplication order might not be immediately clear. Consider these improvements:
- Use distinct variables for each rotation matrix
- Add comments explaining the matrix multiplication order and its effect
// Generate a rotation matrix for the X-axis and Y-axis auto transform = psyqo::SoftMath::generateRotationMatrix33(m_rot, psyqo::SoftMath::Axis::X, cube.m_trig); - auto rot = psyqo::SoftMath::generateRotationMatrix33(m_rot, psyqo::SoftMath::Axis::Y, cube.m_trig); + auto yRotation = psyqo::SoftMath::generateRotationMatrix33(m_rot, psyqo::SoftMath::Axis::Y, cube.m_trig); // Multiply the X and Y rotation matrices together - psyqo::SoftMath::multiplyMatrix33(transform, rot, &transform); + psyqo::SoftMath::multiplyMatrix33(transform, yRotation, &transform); - // Generate a Z-axis rotation matrix (Empty, but it's here for your use) - psyqo::SoftMath::generateRotationMatrix33(&rot, 0, psyqo::SoftMath::Axis::Z, cube.m_trig); + // Generate and apply Z-axis rotation (rotation order: X -> Y -> Z) + auto zRotation = psyqo::Matrix33{}; + psyqo::SoftMath::generateRotationMatrix33(&zRotation, 0, psyqo::SoftMath::Axis::Z, cube.m_trig); // Apply the combined rotation and write it to the pseudo register for the cube's rotation - psyqo::SoftMath::multiplyMatrix33(transform, rot, &transform); + psyqo::SoftMath::multiplyMatrix33(transform, zRotation, &transform);
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
tools/vscode-extension/templates/psyqo/cube/main.cpp
(1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (1)
- GitHub Check: Codacy Static Code Analysis
🔇 Additional comments (1)
tools/vscode-extension/templates/psyqo/cube/main.cpp (1)
128-128
: LGTM! The null pointer issue is fixed.The change correctly passes a pointer to the
rot
matrix instead of 0, preventing the null pointer dereference ingenerateRotationMatrix33
.
Ah, we changed that API at some point. Thanks. |
The first parameter of four parameter method
generateRotationMatrix33
expects a pointer to aMatrix33
. When a 0 is passed, it is interpreted as a null pointer that is later dereferenced to set the matrix and that causes an error.