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
