<div dir="ltr"><div>I use clang 3.6.2 with qt creator 3.5.1 on windows 7 for parsing code in this IDE.</div><div>It works well.</div><div><br></div><div>However, I can see that clang keeps a few times some file descriptors opened on c++ header files (h files) after having parsed a cpp file (that includes these h files).</div><div>The effect is that we cannot save these h files, what is quite frustrating when using an IDE.</div><div><br></div><div>After debugging clang, I remarked that there was a file descriptor leak in the method Preprocessor::HandleIncludeDirective</div><div>(file tools/clang/lib/Lex/PPDirectives.cpp)</div><div><br></div><div>The object 'FileEntry *File' is created (for a given h file) and after some checks, the regular treatment calls EnterSourceFile.</div><div>The File object is detroyed during this call (quite deeply in the stack)</div><div><br></div><div>However, when some errors occur, the execution path goes through early returns and other code pathes.</div><div>In this case, the file descriptor associated to File is not closed and the file descriptor remains open.</div><div><br></div><div>So I did a correction that uses RAII in order to have the file descriptor closed.</div><div>So I wrapped 'FileEntry *File' in a dedicated 'FileEntryCloser fileEntryCloser(File)'</div><div><br></div><div>On regular treatment, the closer is released:</div><div>  // If all is good, enter the new file!</div><div>  if (EnterSourceFile(FID, CurDir, FilenameTok.getLocation()))</div><div>  {</div><div>     fileEntryCloser.release();</div><div>     return;</div><div>  }</div><div>  </div><div>Otherwise, the file descriptor is closed  </div><div>   ~FileEntryCloser()</div><div>   {</div><div>      if(m_File)</div><div>         m_File->closeFile();</div><div>   }</div><div><br></div><div><br></div><div>Now, I have no more remaining file descriptors ...</div><div>Would it be possible to have an evaluation on that?</div><div><br></div><div>Thanks in advance.</div></div>