Skip to content

Commit a938544

Browse files
committed
Log error if calls to dispose fail (osrf#40)
In these cases, we are likely leaking memory. Signed-off-by: Jacob Perron <[email protected]>
1 parent 158f7c7 commit a938544

File tree

4 files changed

+24
-16
lines changed

4 files changed

+24
-16
lines changed

rcljava/src/main/java/org/ros2/rcljava/client/ClientImpl.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,13 @@ public final Class<MessageDefinition> getResponseType() {
135135
*/
136136
public final void dispose() {
137137
Node node = this.nodeReference.get();
138-
if (node != null) {
139-
node.removeClient(this);
140-
nativeDispose(node.getHandle(), this.handle);
141-
this.handle = 0;
138+
if (node == null) {
139+
logger.error("Node reference is null. Failed to dispose of Client.");
140+
return;
142141
}
142+
node.removeClient(this);
143+
nativeDispose(node.getHandle(), this.handle);
144+
this.handle = 0;
143145
}
144146

145147
/**

rcljava/src/main/java/org/ros2/rcljava/publisher/PublisherImpl.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -187,10 +187,12 @@ public final void dispose() {
187187
}
188188
this.eventHandlers.clear();
189189
Node node = this.nodeReference.get();
190-
if (node != null) {
191-
node.removePublisher(this);
192-
nativeDispose(node.getHandle(), this.handle);
193-
this.handle = 0;
190+
if (node == null) {
191+
logger.error("Node reference is null. Failed to dispose of Publisher.");
192+
return;
194193
}
194+
node.removePublisher(this);
195+
nativeDispose(node.getHandle(), this.handle);
196+
this.handle = 0;
195197
}
196198
}

rcljava/src/main/java/org/ros2/rcljava/service/ServiceImpl.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,13 @@ public final Class<MessageDefinition> getResponseType() {
8484
*/
8585
public final void dispose() {
8686
Node node = this.nodeReference.get();
87-
if (node != null) {
88-
node.removeService(this);
89-
nativeDispose(node.getHandle(), this.handle);
90-
this.handle = 0;
87+
if (node == null) {
88+
logger.error("Node reference is null. Failed to dispose of Service.");
89+
return;
9190
}
91+
node.removeService(this);
92+
nativeDispose(node.getHandle(), this.handle);
93+
this.handle = 0;
9294
}
9395

9496
/**

rcljava/src/main/java/org/ros2/rcljava/subscription/SubscriptionImpl.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -200,11 +200,13 @@ public final void dispose() {
200200
}
201201
this.eventHandlers.clear();
202202
Node node = this.nodeReference.get();
203-
if (node != null) {
204-
node.removeSubscription(this);
205-
nativeDispose(node.getHandle(), this.handle);
206-
this.handle = 0;
203+
if (node == null) {
204+
logger.error("Node reference is null. Failed to dispose of Subscription.");
205+
return;
207206
}
207+
node.removeSubscription(this);
208+
nativeDispose(node.getHandle(), this.handle);
209+
this.handle = 0;
208210
}
209211

210212
public void executeCallback(T message) {

0 commit comments

Comments
 (0)