mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
Throw correct exception in HAL_getJoystickAxes/POVs JNI (#1336)
Was incorrectly not returning immediately after throwing the exception. Also add more detail to exception.
This commit is contained in:
committed by
Peter Johnson
parent
15c5a820bf
commit
32ec07ee01
@@ -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<int>(axes.count)
|
||||
<< " Java Size: " << static_cast<int>(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<int>(povs.count)
|
||||
<< " Java Size: " << static_cast<int>(javaSize);
|
||||
|
||||
ThrowIllegalArgumentException(env, errStr.str());
|
||||
return 0;
|
||||
}
|
||||
|
||||
env->SetShortArrayRegion(povsArray, 0, povs.count, povs.povs);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
#include <jni.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include <wpi/StringRef.h>
|
||||
|
||||
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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user