mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-20 00:51:42 +00:00
[hal] Fix segfault in various HAL functions (#4891)
This commit is contained in:
@@ -123,6 +123,9 @@ SIM_JniHandle sim::AllocateBufferCallback(
|
||||
void sim::FreeBufferCallback(JNIEnv* env, SIM_JniHandle handle, jint index,
|
||||
FreeBufferCallbackFunc freeCallback) {
|
||||
auto callback = callbackHandles->Free(handle);
|
||||
if (callback == nullptr) {
|
||||
return;
|
||||
}
|
||||
freeCallback(index, callback->getCallbackId());
|
||||
callback->free(env);
|
||||
}
|
||||
|
||||
@@ -116,6 +116,9 @@ SIM_JniHandle sim::AllocateConstBufferCallback(
|
||||
void sim::FreeConstBufferCallback(JNIEnv* env, SIM_JniHandle handle, jint index,
|
||||
FreeConstBufferCallbackFunc freeCallback) {
|
||||
auto callback = callbackHandles->Free(handle);
|
||||
if (callback == nullptr) {
|
||||
return;
|
||||
}
|
||||
freeCallback(index, callback->getCallbackId());
|
||||
callback->free(env);
|
||||
}
|
||||
|
||||
@@ -242,6 +242,9 @@ static SIM_JniHandle AllocateDeviceCallback(
|
||||
static void FreeDeviceCallback(JNIEnv* env, SIM_JniHandle handle,
|
||||
FreeDeviceCallbackFunc freeCallback) {
|
||||
auto callback = deviceCallbackHandles->Free(handle);
|
||||
if (callback == nullptr) {
|
||||
return;
|
||||
}
|
||||
freeCallback(callback->getCallbackId());
|
||||
callback->free(env);
|
||||
}
|
||||
@@ -296,6 +299,9 @@ static SIM_JniHandle AllocateValueCallback(
|
||||
static void FreeValueCallback(JNIEnv* env, SIM_JniHandle handle,
|
||||
FreeValueCallbackFunc freeCallback) {
|
||||
auto callback = valueCallbackHandles->Free(handle);
|
||||
if (callback == nullptr) {
|
||||
return;
|
||||
}
|
||||
freeCallback(callback->getCallbackId());
|
||||
callback->free(env);
|
||||
}
|
||||
|
||||
@@ -127,6 +127,9 @@ SIM_JniHandle sim::AllocateSpiBufferCallback(
|
||||
void sim::FreeSpiBufferCallback(JNIEnv* env, SIM_JniHandle handle, jint index,
|
||||
FreeSpiBufferCallbackFunc freeCallback) {
|
||||
auto callback = callbackHandles->Free(handle);
|
||||
if (callback == nullptr) {
|
||||
return;
|
||||
}
|
||||
freeCallback(index, callback->getCallbackId());
|
||||
callback->free(env);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user