diff options
author | David Tardon <dtardon@redhat.com> | 2013-07-06 12:25:08 +0200 |
---|---|---|
committer | David Tardon <dtardon@redhat.com> | 2013-07-06 12:27:58 +0200 |
commit | df155ad555c5e4eb9c991d7e08b5a7816e399257 (patch) | |
tree | 351fcc9fbcfbe77e4194b43c63508ae814665380 | |
parent | 8dadbeb2385227a5066beeacf1c48c5121b31a5d (diff) |
coverity: avoid memory leak on exception
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | src/lib/CDRDocument.cpp | 7 |
2 files changed, 5 insertions, 3 deletions
diff --git a/configure.ac b/configure.ac index 84f2db1..c963784 100644 --- a/configure.ac +++ b/configure.ac @@ -98,6 +98,7 @@ AC_SUBST(ICU_LIBS) AC_CHECK_HEADERS( boost/optional.hpp \ boost/property_tree/ptree.hpp \ + boost/scoped_ptr.hpp \ boost/spirit/include/classic.hpp \ boost/property_tree/json_parser.hpp, [], diff --git a/src/lib/CDRDocument.cpp b/src/lib/CDRDocument.cpp index eeadfaf..6ab7d4d 100644 --- a/src/lib/CDRDocument.cpp +++ b/src/lib/CDRDocument.cpp @@ -29,6 +29,7 @@ #include <string> #include <string.h> +#include <boost/scoped_ptr.hpp> #include <libcdr/libcdr.h> #include "CDRParser.h" #include "CDRSVGGenerator.h" @@ -179,13 +180,13 @@ bool libcdr::CDRDocument::parse(::WPXInputStream *input, libwpg::WPGPaintInterfa input = zinput.getDocumentOLEStream("content/root.dat"); if (input) { - WPXInputStream *tmpStream = zinput.getDocumentOLEStream("content/dataFileList.dat"); - if (tmpStream) + boost::scoped_ptr<WPXInputStream> tmpStream(zinput.getDocumentOLEStream("content/dataFileList.dat")); + if (bool(tmpStream)) { std::string dataFileName; while (!tmpStream->atEOS()) { - unsigned char character = readU8(tmpStream); + unsigned char character = readU8(tmpStream.get()); if (character == 0x0a) { dataFiles.push_back(dataFileName); |