From 0450d8119028905823a393a5598eb350b8b5d377 Mon Sep 17 00:00:00 2001 From: Montel Laurent Date: Thu, 21 Mar 2013 11:05:46 +0100 Subject: Fix leak when fd != -1 Change-Id: I07bcf4b678460c86642436d1a69071f765ef63ca Reviewed-by: Oswald Buddenhagen --- qmake/generators/makefiledeps.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/qmake/generators/makefiledeps.cpp b/qmake/generators/makefiledeps.cpp index a4f3e665b3..898903a423 100644 --- a/qmake/generators/makefiledeps.cpp +++ b/qmake/generators/makefiledeps.cpp @@ -392,8 +392,11 @@ bool QMakeSourceFileInfo::findDeps(SourceFile *file) #else fd = open(sourceFile.local().toLatin1().constData(), O_RDONLY); #endif - if(fd == -1 || fstat(fd, &fst) || S_ISDIR(fst.st_mode)) + if (fd == -1 || fstat(fd, &fst) || S_ISDIR(fst.st_mode)) { + if (fd != -1) + QT_CLOSE(fd); return false; + } buffer = getBuffer(fst.st_size); for(int have_read = 0; (have_read = QT_READ(fd, buffer + buffer_len, fst.st_size - buffer_len)); @@ -702,8 +705,11 @@ bool QMakeSourceFileInfo::findMocs(SourceFile *file) #else fd = open(fixPathForFile(file->file, true).local().toLocal8Bit().constData(), O_RDONLY); #endif - if(fd == -1 || fstat(fd, &fst) || S_ISDIR(fst.st_mode)) + if (fd == -1 || fstat(fd, &fst) || S_ISDIR(fst.st_mode)) { + if (fd != -1) + QT_CLOSE(fd); return false; //shouldn't happen + } buffer = getBuffer(fst.st_size); for(int have_read = buffer_len = 0; (have_read = QT_READ(fd, buffer + buffer_len, fst.st_size - buffer_len)); -- cgit v1.2.3