From eafa947338614730d76f0a67409a990d9613acc0 Mon Sep 17 00:00:00 2001 From: Tyler Veness Date: Sat, 25 Dec 2021 05:19:43 -0800 Subject: [PATCH] [wpimath] Make copies of trajectory constraint arguments (#3832) This avoids stack-use-after-scope bugs in code like the following when the original argument goes out of scope: ```cpp frc2::Command* RobotContainer::GetAutonomousCommand() { // Create a voltage constraint to ensure we don't accelerate too fast frc::DifferentialDriveVoltageConstraint autoVoltageConstraint( frc::SimpleMotorFeedforward( DriveConstants::ks, DriveConstants::kv, DriveConstants::ka), DriveConstants::kDriveKinematics, 10_V); ``` --- .../constraint/DifferentialDriveKinematicsConstraint.h | 2 +- .../constraint/DifferentialDriveVoltageConstraint.h | 4 ++-- .../trajectory/constraint/MecanumDriveKinematicsConstraint.h | 2 +- .../trajectory/constraint/SwerveDriveKinematicsConstraint.h | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/wpimath/src/main/native/include/frc/trajectory/constraint/DifferentialDriveKinematicsConstraint.h b/wpimath/src/main/native/include/frc/trajectory/constraint/DifferentialDriveKinematicsConstraint.h index ad643bfa42..0edd8cc432 100644 --- a/wpimath/src/main/native/include/frc/trajectory/constraint/DifferentialDriveKinematicsConstraint.h +++ b/wpimath/src/main/native/include/frc/trajectory/constraint/DifferentialDriveKinematicsConstraint.h @@ -32,7 +32,7 @@ class WPILIB_DLLEXPORT DifferentialDriveKinematicsConstraint units::meters_per_second_t speed) const override; private: - const DifferentialDriveKinematics& m_kinematics; + DifferentialDriveKinematics m_kinematics; units::meters_per_second_t m_maxSpeed; }; } // namespace frc diff --git a/wpimath/src/main/native/include/frc/trajectory/constraint/DifferentialDriveVoltageConstraint.h b/wpimath/src/main/native/include/frc/trajectory/constraint/DifferentialDriveVoltageConstraint.h index 06d0e50078..40a0d8eff4 100644 --- a/wpimath/src/main/native/include/frc/trajectory/constraint/DifferentialDriveVoltageConstraint.h +++ b/wpimath/src/main/native/include/frc/trajectory/constraint/DifferentialDriveVoltageConstraint.h @@ -44,8 +44,8 @@ class WPILIB_DLLEXPORT DifferentialDriveVoltageConstraint units::meters_per_second_t speed) const override; private: - const SimpleMotorFeedforward& m_feedforward; - const DifferentialDriveKinematics& m_kinematics; + SimpleMotorFeedforward m_feedforward; + DifferentialDriveKinematics m_kinematics; units::volt_t m_maxVoltage; }; } // namespace frc diff --git a/wpimath/src/main/native/include/frc/trajectory/constraint/MecanumDriveKinematicsConstraint.h b/wpimath/src/main/native/include/frc/trajectory/constraint/MecanumDriveKinematicsConstraint.h index 816d8ef405..ac47dbfeb5 100644 --- a/wpimath/src/main/native/include/frc/trajectory/constraint/MecanumDriveKinematicsConstraint.h +++ b/wpimath/src/main/native/include/frc/trajectory/constraint/MecanumDriveKinematicsConstraint.h @@ -33,7 +33,7 @@ class WPILIB_DLLEXPORT MecanumDriveKinematicsConstraint units::meters_per_second_t speed) const override; private: - const MecanumDriveKinematics& m_kinematics; + MecanumDriveKinematics m_kinematics; units::meters_per_second_t m_maxSpeed; }; } // namespace frc diff --git a/wpimath/src/main/native/include/frc/trajectory/constraint/SwerveDriveKinematicsConstraint.h b/wpimath/src/main/native/include/frc/trajectory/constraint/SwerveDriveKinematicsConstraint.h index 67e9fc9272..d26497735d 100644 --- a/wpimath/src/main/native/include/frc/trajectory/constraint/SwerveDriveKinematicsConstraint.h +++ b/wpimath/src/main/native/include/frc/trajectory/constraint/SwerveDriveKinematicsConstraint.h @@ -32,7 +32,7 @@ class SwerveDriveKinematicsConstraint : public TrajectoryConstraint { units::meters_per_second_t speed) const override; private: - const frc::SwerveDriveKinematics& m_kinematics; + frc::SwerveDriveKinematics m_kinematics; units::meters_per_second_t m_maxSpeed; }; } // namespace frc