<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none"><!-- p { margin-top: 0px; margin-bottom: 0px; }--></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;background-color:#FFFFFF;font-family:Calibri,Arial,Helvetica,sans-serif;">
Hello,<br>
<div><br>
</div>
<div>I am the author of an package for Emacs that brings libclang power to Emacs. <span style="font-size: 12pt;">It has been reported to me (here: </span><a href="https://github.com/Sarcasm/irony-mode/issues/134#issuecomment-68412195" id="lnk568041" style="font-size: 12pt;">https://github.com/Sarcasm/irony-mode/issues/134</a><span style="font-size: 12pt;">) that libclang
 has some issues on Windows. </span><span style="font-size: 12pt;">After some search I have identified a situation that triggers the issue consistently.</span></div>
<div><span style="font-size: 12pt;"><br>
</span></div>
<div><span style="font-size: 12pt;">I have a pair of file, source file and header files.</span></div>
<div><span style="font-size: 12pt;"><br>
</span></div>
<div><strong>foo.h</strong><br>
</div>
<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">
<div>
<div>#ifndef FOO_H_</div>
</div>
<div>
<div>#define FOO_H_</div>
</div>
<div>
<div><br>
</div>
</div>
<div>
<div>struct Foo</div>
</div>
<div>
<div>{</div>
</div>
<div>
<div>  void foobar();</div>
</div>
<div>
<div>};</div>
</div>
<div>
<div><br>
</div>
</div>
<div>
<div>#endif /* !FOO_H_ */</div>
</div>
</blockquote>
<div>
<div><br>
</div>
<div><strong>foo.cpp</strong><br>
</div>
</div>
<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">
<div>
<div>
<div>#include "foo.h"</div>
</div>
</div>
<div>
<div>
<div><br>
</div>
</div>
</div>
<div>
<div>
<div>void Foo::|<br>
</div>
</div>
</div>
</blockquote>
<div>
<div>
<div><br>
foo.cpp is incomplete because it is used for requesting code-completion to libclang at the point of the pipe '|'.<br>
</div>
</div>
<div><br>
</div>
<div>
<ol>
<li><span style="font-size: 12pt;">​</span><span style="font-size: 12pt;">If I request code </span><span style="font-size: 12pt;">completion a first time</span><span style="font-size: 12pt;">, everything work as expected.</span></li><li><span style="font-size: 12pt;"></span><span style="font-size: 12pt;">If I edit foo.h to remove the method foobar() from the struct Foo,</span><span style="font-size: 12pt;"> code completion still </span><span style="font-size: 12pt;">work as expected.</span></li><li><span style="font-size: 12pt;"></span><span style="font-size: 12pt;">If I restore the foobar() method, code completion breaks with the following diagnostics </span><span style="font-size: 12pt;">in this case:<br>
​<br>
<span style="font-size: 12pt;">    ​​​./foo.h:9:2: error: invalid preprocessing directive<br>
</span></span><span style="font-size: 12pt;">    ​​</span><span style="font-size: 12pt;">./foo.h:1:2</span><span style="font-size: 12pt;">: error: unterminated conditional directive<br>
<span style="font-size: 12pt;"><br>
I have tested with some bigger changes in terms of characters, removing a big comment  (~1000 chars) for example and the errors was slightly different in this case, warning about null chars in the header file.</span><br>
</span></li></ol>
</div>
</div>
<div>
<div>I have the feeling that the internal buffer Clang has for the header file foo.h get corrupted somehow.<br>
</div>
<div><span style="font-size: 12pt;"><br>
</span></div>
<div><span style="font-size: 12pt;">Does anyone have opinion about this?</span></div>
<div><span style="font-size: 12pt;">Some places to look for or ways to debug this?</span></div>
<br>
</div>
<div>Additional information:<br>
</div>
<div>
<ul>
<li>​​This doesn't seem to happen on Linux.<br>
</li><li><span style="font-size: 12pt;">I just tried with the trunk (</span><span style="font-size: 12pt;">r225060), the issue is still present.</span></li><li>A slightly more detailed procedure is described here <a href="https://github.com/Sarcasm/irony-mode/issues/134#issuecomment-68412195" id="lnk621633">https://github.com/Sarcasm/irony-mode/issues/134#issuecomment-68412195</a> if someone want to reproduce
 the bug. It is using irony-server, a small C++ program that builds with CMake and depends on libclang. This program should be easy to get working for people already building  Clang on Windows (should work with cl/clang-cl/mingw).<br>
</li></ul>
<div>Thanks,<br>
</div>
</div>
<div>Guillaume<br>
</div>
<div>
<div><br>
</div>
</div>
</div>
</body>
</html>