Fixed resource leak

pull/31/head
Tatsuhiro Tsujikawa 2012-10-29 22:40:07 +09:00
parent 8566d050ff
commit f42199b46d
2 changed files with 6 additions and 2 deletions

View File

@ -93,10 +93,12 @@ typename Parser::ResultType parseFile(Parser& parser,
int fd; int fd;
// TODO Overrode a2open(const char*,..) and a2open(const std::wstring&,..) // TODO Overrode a2open(const char*,..) and a2open(const std::wstring&,..)
while((fd = a2open(utf8ToWChar(filename).c_str(), 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) { if(fd == -1) {
return Parser::ParserStateMachineType::noResult(); return Parser::ParserStateMachineType::noResult();
} }
auto_delete_r<int, int> fdDeleter(fd, close);
char buf[4096]; char buf[4096];
ssize_t nread; ssize_t nread;
ssize_t nproc; ssize_t nproc;

View File

@ -47,11 +47,13 @@ bool parseFile(const std::string& filename, ParserStateMachine* psm)
fd = STDIN_FILENO; fd = STDIN_FILENO;
} else { } else {
while((fd = a2open(utf8ToWChar(filename).c_str(), 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) { if(fd == -1) {
return false; return false;
} }
} }
auto_delete_r<int, int> fdDeleter(fd, close);
XmlParser ps(psm); XmlParser ps(psm);
char buf[4096]; char buf[4096];
ssize_t nread; ssize_t nread;