From: Marc-Andre Laperle Date: Fri, 11 Dec 2015 17:37:09 +0000 (-0500) Subject: ctf: Fixed leaked file handle when calling CTFTraceReader.update X-Git-Url: http://git.efficios.com/?a=commitdiff_plain;h=a3a1a06b3d0502c1f14d01947e7dd49be2946407;p=deliverable%2Ftracecompass.git ctf: Fixed leaked file handle when calling CTFTraceReader.update If an instance of CTFStreamInputReader already existed in a CTFTraceReader, it was not getting closed after checking whether or not it existed. This was causing a test failure on Windows in CTFTraceGrowingTest. Change-Id: Ia064d3270882515b32834456771a108970ce8f8e Signed-off-by: Marc-Andre Laperle Reviewed-on: https://git.eclipse.org/r/62515 Reviewed-by: Hudson CI Reviewed-by: Matthew Khouzam Tested-by: Matthew Khouzam --- diff --git a/ctf/org.eclipse.tracecompass.ctf.core/src/org/eclipse/tracecompass/ctf/core/trace/CTFTraceReader.java b/ctf/org.eclipse.tracecompass.ctf.core/src/org/eclipse/tracecompass/ctf/core/trace/CTFTraceReader.java index 805c7a9a41..905856dbb2 100644 --- a/ctf/org.eclipse.tracecompass.ctf.core/src/org/eclipse/tracecompass/ctf/core/trace/CTFTraceReader.java +++ b/ctf/org.eclipse.tracecompass.ctf.core/src/org/eclipse/tracecompass/ctf/core/trace/CTFTraceReader.java @@ -244,18 +244,17 @@ public class CTFTraceReader implements AutoCloseable { Set streamInputs = stream.getStreamInputs(); for (CTFStreamInput streamInput : streamInputs) { /* - * Create a reader. + * Create a reader to check if it already exists in the list. If it doesn't, add it. */ - CTFStreamInputReader streamInputReader = new CTFStreamInputReader(checkNotNull(streamInput)); - - - /* - * Add it to the group. - */ - if (!fStreamInputReaders.contains(streamInputReader)) { - streamInputReader.readNextEvent(); - fStreamInputReaders.add(streamInputReader); - readers.add(streamInputReader); + try (CTFStreamInputReader streamInputReader = new CTFStreamInputReader(checkNotNull(streamInput))) { + if (!fStreamInputReaders.contains(streamInputReader)) { + CTFStreamInputReader streamInputReaderToAdd = new CTFStreamInputReader(checkNotNull(streamInput)); + streamInputReaderToAdd.readNextEvent(); + fStreamInputReaders.add(streamInputReaderToAdd); + readers.add(streamInputReaderToAdd); + } + } catch (IOException e) { + Activator.logError(e.getMessage(), e); } } }