# HG changeset patch # User Peter Hofer # Date 1305710830 -7200 # Node ID 4149feada801ec0ddc8379a960c088fc199f3334 # Parent abb4cc15283d58076d34f905015f0a545f5a3d5c GraphvizPrinterObserver: close output stream also in case of exception diff -r abb4cc15283d -r 4149feada801 graal/GraalCompiler/src/com/sun/c1x/debug/GraphvizPrinterObserver.java --- a/graal/GraalCompiler/src/com/sun/c1x/debug/GraphvizPrinterObserver.java Wed May 18 11:53:06 2011 +0200 +++ b/graal/GraalCompiler/src/com/sun/c1x/debug/GraphvizPrinterObserver.java Wed May 18 11:27:10 2011 +0200 @@ -60,10 +60,12 @@ name = name.substring(1, name.length() - 1).replace('/', '.'); name = name + "." + event.getMethod().name(); String filename = name + "_" + (n++) + "_" + event.getLabel(); + + OutputStream out = null; try { if (pdf) { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - GraphvizPrinter printer = new GraphvizPrinter(out); + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + GraphvizPrinter printer = new GraphvizPrinter(buffer); if (C1XOptions.OmitDOTFrameStates) { printer.addOmittedClass(FrameState.class); } @@ -71,24 +73,28 @@ printer.print(graph, true); printer.end(); - FileOutputStream output = new FileOutputStream(filename + ".pdf"); - GraphvizRunner.process(GraphvizRunner.DOT_LAYOUT, new ByteArrayInputStream(out.toByteArray()), output, "pdf"); - output.close(); + out = new FileOutputStream(filename + ".pdf"); + GraphvizRunner.process(GraphvizRunner.DOT_LAYOUT, new ByteArrayInputStream(buffer.toByteArray()), out, "pdf"); } else { - final FileOutputStream stream = new FileOutputStream(filename + ".gv"); + out = new FileOutputStream(filename + ".gv"); - GraphvizPrinter printer = new GraphvizPrinter(stream); + GraphvizPrinter printer = new GraphvizPrinter(out); if (C1XOptions.OmitDOTFrameStates) { printer.addOmittedClass(FrameState.class); } printer.begin(name); printer.print(graph, true); printer.end(); - - stream.close(); } } catch (IOException e) { e.printStackTrace(); + } finally { + if (out != null) { + try { + out.close(); + } catch (IOException e) { + } + } } } }