diff --git a/hal/src/main/native/cpp/jni/HAL.cpp b/hal/src/main/native/cpp/jni/HAL.cpp index 4aee750bf2..cc5f7cf03f 100644 --- a/hal/src/main/native/cpp/jni/HAL.cpp +++ b/hal/src/main/native/cpp/jni/HAL.cpp @@ -176,8 +176,14 @@ Java_edu_wpi_first_hal_HAL_getJoystickAxes jsize javaSize = env->GetArrayLength(axesArray); if (axes.count > javaSize) { - ThrowIllegalArgumentException( - env, "Native array size larger then passed in java array size"); + wpi::SmallString<128> errStr; + wpi::raw_svector_ostream oss{errStr}; + oss << "Native array size larger then passed in java array size " + << "Native Size: " << static_cast(axes.count) + << " Java Size: " << static_cast(javaSize); + + ThrowIllegalArgumentException(env, errStr.str()); + return 0; } env->SetFloatArrayRegion(axesArray, 0, axes.count, axes.axes); @@ -200,8 +206,14 @@ Java_edu_wpi_first_hal_HAL_getJoystickPOVs jsize javaSize = env->GetArrayLength(povsArray); if (povs.count > javaSize) { - ThrowIllegalArgumentException( - env, "Native array size larger then passed in java array size"); + wpi::SmallString<128> errStr; + wpi::raw_svector_ostream oss{errStr}; + oss << "Native array size larger then passed in java array size " + << "Native Size: " << static_cast(povs.count) + << " Java Size: " << static_cast(javaSize); + + ThrowIllegalArgumentException(env, errStr.str()); + return 0; } env->SetShortArrayRegion(povsArray, 0, povs.count, povs.povs); diff --git a/hal/src/main/native/cpp/jni/HALUtil.cpp b/hal/src/main/native/cpp/jni/HALUtil.cpp index 5c86561030..72eb22c72d 100644 --- a/hal/src/main/native/cpp/jni/HALUtil.cpp +++ b/hal/src/main/native/cpp/jni/HALUtil.cpp @@ -206,7 +206,7 @@ void ReportCANError(JNIEnv* env, int32_t status, int message_id) { } } -void ThrowIllegalArgumentException(JNIEnv* env, const char* msg) { +void ThrowIllegalArgumentException(JNIEnv* env, wpi::StringRef msg) { illegalArgExCls.Throw(env, msg); } diff --git a/hal/src/main/native/cpp/jni/HALUtil.h b/hal/src/main/native/cpp/jni/HALUtil.h index 7359d28539..8197e1a766 100644 --- a/hal/src/main/native/cpp/jni/HALUtil.h +++ b/hal/src/main/native/cpp/jni/HALUtil.h @@ -11,6 +11,8 @@ #include #include +#include + struct HAL_MatchInfo; namespace frc { @@ -43,7 +45,7 @@ inline bool CheckCANStatus(JNIEnv* env, int32_t status, int32_t message_id) { return status == 0; } -void ThrowIllegalArgumentException(JNIEnv* env, const char* msg); +void ThrowIllegalArgumentException(JNIEnv* env, wpi::StringRef msg); void ThrowBoundaryException(JNIEnv* env, double value, double lower, double upper);