Hi Takumi,

I think we should instead fix CXLoadedDiagnosticSetImpl::makeString() to add a 
null terminator.  Your patch actually introduces a memory leak since we don't 
ever explicitly release these CXStrings (and expect them to get released when 
the CXLoadedDiagnosticSetImpl object is destroyed).

Ted

On Nov 10, 2011, at 11:27 PM, NAKAMURA Takumi wrote:

> Author: chapuni
> Date: Fri Nov 11 01:27:33 2011
> New Revision: 144379
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=144379&view=rev
> Log:
> libclang/CXLoadedDiagnostic.cpp: Work around not to miss the string 
> terminator on fixit.
> 
> FixIts might be exposed as C string via clang_getCString(), though the zero 
> terminator is not allocated in CXLoadedDiagnosticSetImpl::makeString.
> 
> Modified:
>    cfe/trunk/test/Misc/serialized-diags.c
>    cfe/trunk/tools/libclang/CXLoadedDiagnostic.cpp
> 
> Modified: cfe/trunk/test/Misc/serialized-diags.c
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Misc/serialized-diags.c?rev=144379&r1=144378&r2=144379&view=diff
> ==============================================================================
> --- cfe/trunk/test/Misc/serialized-diags.c (original)
> +++ cfe/trunk/test/Misc/serialized-diags.c Fri Nov 11 01:27:33 2011
> @@ -18,6 +18,6 @@
> // CHECK: {{.*[/\\]}}serialized-diags.c:3:12: warning: variable 'voodoo' is 
> uninitialized when used here [-Wuninitialized]
> // CHECK: Range: {{.*[/\\]}}serialized-diags.c:3:12 
> {{.*[/\\]}}serialized-diags.c:3:18
> // CHECK: +-{{.*[/\\]}}serialized-diags.c:2:13: note: initialize the variable 
> 'voodoo' to silence this warning []
> -// CHECK: +-FIXIT: ({{.*[/\\]}}serialized-diags.c:2:13 - 
> {{.*[/\\]}}serialized-diags.c:2:13): " = 0Parse Issueexpected ';' after 
> expression"
> +// CHECK: +-FIXIT: ({{.*[/\\]}}serialized-diags.c:2:13 - 
> {{.*[/\\]}}serialized-diags.c:2:13): " = 0"
> // CHECK: {{.*[/\\]}}serialized-diags.c:8:22: error: expected ';' after 
> expression []
> // CHECK: FIXIT: ({{.*[/\\]}}serialized-diags.c:8:22 - 
> {{.*[/\\]}}serialized-diags.c:8:22): ";"
> 
> Modified: cfe/trunk/tools/libclang/CXLoadedDiagnostic.cpp
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CXLoadedDiagnostic.cpp?rev=144379&r1=144378&r2=144379&view=diff
> ==============================================================================
> --- cfe/trunk/tools/libclang/CXLoadedDiagnostic.cpp (original)
> +++ cfe/trunk/tools/libclang/CXLoadedDiagnostic.cpp Fri Nov 11 01:27:33 2011
> @@ -626,7 +626,7 @@
>         llvm::StringRef RetStr;
>         if (readString(TopDiags, RetStr, "FIXIT", Record, BlobStart, BlobLen))
>           return Failure;
> -        D->FixIts.push_back(std::make_pair(SR, createCXString(RetStr, 
> false)));
> +        D->FixIts.push_back(std::make_pair(SR, createCXString(RetStr)));
>         continue;        
>       }
> 
> 
> 
> _______________________________________________
> cfe-commits mailing list
> [email protected]
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to