Description
The `Matrix2::swap_columns`, `Matrix3::swap_columns`, and `Matrix4::swap_columns`
implementations call `ptr::swap(&mut self[a], &mut self[b])`.
When `a == b`, these safe APIs create two mutable references to the same matrix
column and pass them to `ptr::swap`. This violates Rust's aliasing rules and can
trigger undefined behavior. The issue can be reproduced from safe Rust by calling
`swap_columns` with identical column indices, for example `m.swap_columns(0, 0)`.
A minimal fix is to return early when the two column indices are equal before
calling `ptr::swap`.
Affected packages
| Ecosystem | Package | Affected | Fixed | Record |
|---|---|---|---|---|
| crates.io | cgmath | >= 0.0.0-0 | — | RUSTSEC-2026-0197 |