From 88fc46da2217fad8e5a3650b0da7115872bc9d46 Mon Sep 17 00:00:00 2001 From: David Vo Date: Sat, 24 Aug 2024 23:49:46 +1000 Subject: [PATCH] Call reachabilityFence inside finally blocks (#7001) --- .../wpi/first/cameraserver/CameraServer.java | 51 ++++++++++--------- .../edu/wpi/first/wpilibj/AnalogTrigger.java | 15 +++--- 2 files changed, 36 insertions(+), 30 deletions(-) diff --git a/cameraserver/src/main/java/edu/wpi/first/cameraserver/CameraServer.java b/cameraserver/src/main/java/edu/wpi/first/cameraserver/CameraServer.java index d0307f7899..0ff47f8f5c 100644 --- a/cameraserver/src/main/java/edu/wpi/first/cameraserver/CameraServer.java +++ b/cameraserver/src/main/java/edu/wpi/first/cameraserver/CameraServer.java @@ -117,31 +117,34 @@ public final class CameraServer { @Override public void close() { - if (m_booleanValueEntry != null) { - m_booleanValueEntry.close(); + try { + if (m_booleanValueEntry != null) { + m_booleanValueEntry.close(); + } + if (m_integerValueEntry != null) { + m_integerValueEntry.close(); + } + if (m_stringValueEntry != null) { + m_stringValueEntry.close(); + } + if (m_minPublisher != null) { + m_minPublisher.close(); + } + if (m_maxPublisher != null) { + m_maxPublisher.close(); + } + if (m_stepPublisher != null) { + m_stepPublisher.close(); + } + if (m_defaultPublisher != null) { + m_defaultPublisher.close(); + } + if (m_choicesPublisher != null) { + m_choicesPublisher.close(); + } + } finally { + Reference.reachabilityFence(m_videoListener); } - if (m_integerValueEntry != null) { - m_integerValueEntry.close(); - } - if (m_stringValueEntry != null) { - m_stringValueEntry.close(); - } - if (m_minPublisher != null) { - m_minPublisher.close(); - } - if (m_maxPublisher != null) { - m_maxPublisher.close(); - } - if (m_stepPublisher != null) { - m_stepPublisher.close(); - } - if (m_defaultPublisher != null) { - m_defaultPublisher.close(); - } - if (m_choicesPublisher != null) { - m_choicesPublisher.close(); - } - Reference.reachabilityFence(m_videoListener); } BooleanEntry m_booleanValueEntry; diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/AnalogTrigger.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/AnalogTrigger.java index 1d4a404dd9..10949a8823 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/AnalogTrigger.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/AnalogTrigger.java @@ -74,13 +74,16 @@ public class AnalogTrigger implements Sendable, AutoCloseable { @Override public void close() { - SendableRegistry.remove(this); - AnalogJNI.cleanAnalogTrigger(m_port); - m_port = 0; - if (m_ownsAnalog && m_analogInput != null) { - m_analogInput.close(); + try { + SendableRegistry.remove(this); + AnalogJNI.cleanAnalogTrigger(m_port); + m_port = 0; + if (m_ownsAnalog && m_analogInput != null) { + m_analogInput.close(); + } + } finally { + Reference.reachabilityFence(m_dutyCycle); } - Reference.reachabilityFence(m_dutyCycle); } /**