From f42199b46df776abb80f3095330660fc556b7623 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Mon, 29 Oct 2012 22:40:07 +0900 Subject: [PATCH] Fixed resource leak --- src/GenericParser.h | 4 +++- src/XmlParser.cc | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/GenericParser.h b/src/GenericParser.h index f988d58b..b4930498 100644 --- a/src/GenericParser.h +++ b/src/GenericParser.h @@ -93,10 +93,12 @@ typename Parser::ResultType parseFile(Parser& parser, int fd; // TODO Overrode a2open(const char*,..) and a2open(const std::wstring&,..) while((fd = a2open(utf8ToWChar(filename).c_str(), - O_BINARY | O_RDONLY, OPEN_MODE)) == -1 && fd != EINTR); + O_BINARY | O_RDONLY, OPEN_MODE)) == -1 + && errno != EINTR); if(fd == -1) { return Parser::ParserStateMachineType::noResult(); } + auto_delete_r fdDeleter(fd, close); char buf[4096]; ssize_t nread; ssize_t nproc; diff --git a/src/XmlParser.cc b/src/XmlParser.cc index c011927e..1a0ad331 100644 --- a/src/XmlParser.cc +++ b/src/XmlParser.cc @@ -47,11 +47,13 @@ bool parseFile(const std::string& filename, ParserStateMachine* psm) fd = STDIN_FILENO; } else { while((fd = a2open(utf8ToWChar(filename).c_str(), - O_BINARY | O_RDONLY, OPEN_MODE)) == -1 && fd != EINTR); + O_BINARY | O_RDONLY, OPEN_MODE)) == -1 + && errno != EINTR); if(fd == -1) { return false; } } + auto_delete_r fdDeleter(fd, close); XmlParser ps(psm); char buf[4096]; ssize_t nread;