@@ -279,27 +279,24 @@ static bool fillRanges(MemoryBuffer *Code,
279279
280280 if (Offsets.empty ())
281281 Offsets.push_back (0 );
282- if (Offsets.size () != Lengths.size () &&
283- !(Offsets.size () == 1 && Lengths.empty ())) {
282+ if (Offsets.size () == 1 && Lengths.empty ()) {
283+ Lengths.push_back (Sources.getFileOffset (Sources.getLocForEndOfFile (ID)) -
284+ Offsets[0 ]);
285+ } else if (Offsets.size () != Lengths.size ()) {
284286 errs () << " error: number of -offset and -length arguments must match.\n " ;
285287 return true ;
286288 }
287- for (unsigned I = 0 , E = Offsets.size (), Size = Lengths. size () ; I < E; ++I) {
289+ for (unsigned I = 0 , E = Offsets.size (); I < E; ++I) {
288290 const auto Offset = Offsets[I];
289291 if (Offset >= Code->getBufferSize ()) {
290292 errs () << " error: offset " << Offset << " is outside the file\n " ;
291293 return true ;
292294 }
293- unsigned Length;
294- if (I < Size) {
295- Length = Lengths[I];
296- if (Offset + Length > Code->getBufferSize ()) {
297- errs () << " error: invalid length " << Length << " , offset + length ("
298- << Offset + Length << " ) is outside the file.\n " ;
299- return true ;
300- }
301- } else {
302- Length = Sources.getFileOffset (Sources.getLocForEndOfFile (ID)) - Offset;
295+ const auto Length = Lengths[I];
296+ if (Offset + Length > Code->getBufferSize ()) {
297+ errs () << " error: invalid length " << Length << " , offset + length ("
298+ << Offset + Length << " ) is outside the file.\n " ;
299+ return true ;
303300 }
304301 Ranges.push_back (tooling::Range (Offset, Length));
305302 }
0 commit comments