diff options
| -rw-r--r-- | clang/test/Misc/serialized-diags.m | 2 | ||||
| -rw-r--r-- | clang/tools/libclang/CXLoadedDiagnostic.cpp | 12 |
2 files changed, 8 insertions, 6 deletions
diff --git a/clang/test/Misc/serialized-diags.m b/clang/test/Misc/serialized-diags.m index aac791e9e28..71c983b8838 100644 --- a/clang/test/Misc/serialized-diags.m +++ b/clang/test/Misc/serialized-diags.m @@ -21,7 +21,7 @@ // CHECK: Range: {{.*[/\\]}}serialized-diags.m:8:4 {{.*[/\\]}}serialized-diags.m:8:9 // CHECK: Number FIXITs = 1 // CHECK: FIXIT: ({{.*[/\\]}}serialized-diags.m:8:4 - {{.*[/\\]}}serialized-diags.m:8:9): "self" -// CHECK: +-(null):0:0: note: 'self' is an implicit parameter [] [] +// CHECK: +-(null):0:0: note: 'self' is an implicit parameter [] [Semantic Issue] // CHECK: Number FIXITs = 0 // CHECK: {{.*[/\\]}}serialized-diags.m:1:12: warning: class 'Foo' defined without specifying a base class [-Wobjc-root-class] [Semantic Issue] // CHECK: Number FIXITs = 0 diff --git a/clang/tools/libclang/CXLoadedDiagnostic.cpp b/clang/tools/libclang/CXLoadedDiagnostic.cpp index df8f41440ee..0e0075fc387 100644 --- a/clang/tools/libclang/CXLoadedDiagnostic.cpp +++ b/clang/tools/libclang/CXLoadedDiagnostic.cpp @@ -485,12 +485,14 @@ LoadResult DiagLoader::readString(CXLoadedDiagnosticSetImpl &TopDiags, LoadResult DiagLoader::readLocation(CXLoadedDiagnosticSetImpl &TopDiags, RecordData &Record, unsigned &offset, CXLoadedDiagnostic::Location &Loc) { - if (Record.size() < offset + 3) { + if (Record.size() < offset + 4) { reportInvalidFile("Corrupted source location"); return Failure; } + auto Fields = makeArrayRef(Record).slice(offset); + offset += 4; - unsigned fileID = Record[offset++]; + unsigned fileID = Fields[0]; if (fileID == 0) { // Sentinel value. Loc.file = nullptr; @@ -506,9 +508,9 @@ LoadResult DiagLoader::readLocation(CXLoadedDiagnosticSetImpl &TopDiags, return Failure; } Loc.file = const_cast<FileEntry *>(FE); - Loc.line = Record[offset++]; - Loc.column = Record[offset++]; - Loc.offset = Record[offset++]; + Loc.line = Fields[1]; + Loc.column = Fields[2]; + Loc.offset = Fields[3]; return Success; } |

