From 4c67a964a19d49db71f44ee605866821e191ff26 Mon Sep 17 00:00:00 2001 From: Al Sutton Date: Thu, 1 Dec 2011 11:28:52 +0000 Subject: [PATCH] Added try/finally protection to ensure streams are closed. Added initial size guess for the CharBuffer --- .../net/yacy/document/parser/odtParser.java | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/source/net/yacy/document/parser/odtParser.java b/source/net/yacy/document/parser/odtParser.java index 403c4328f..b0b45d0e2 100644 --- a/source/net/yacy/document/parser/odtParser.java +++ b/source/net/yacy/document/parser/odtParser.java @@ -114,17 +114,20 @@ public class odtParser extends AbstractParser implements Parser { if (entryName.equals("content.xml")) { // create a writer for output - writer = new CharBuffer(); - - // extract data - final InputStream zipFileEntryStream = zipFile.getInputStream(zipEntry); - final SAXParser saxParser = saxParserFactory.newSAXParser(); - saxParser.parse(zipFileEntryStream, new ODContentHandler(writer)); - - // close readers and writers - zipFileEntryStream.close(); - writer.close(); - + writer = new CharBuffer((int)zipEntry.getSize()); + try { + // extract data + final InputStream zipFileEntryStream = zipFile.getInputStream(zipEntry); + try { + final SAXParser saxParser = saxParserFactory.newSAXParser(); + saxParser.parse(zipFileEntryStream, new ODContentHandler(writer)); + } finally { + // close readers and writers + zipFileEntryStream.close(); + } + } finally { + writer.close(); + } } else if (entryName.equals("meta.xml")) { // meta.xml contains metadata about the document final InputStream zipFileEntryStream = zipFile.getInputStream(zipEntry);