diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/perf/util/probe-event.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c index 327604c1253f..b812f1412c3a 100644 --- a/tools/perf/util/probe-event.c +++ b/tools/perf/util/probe-event.c | |||
@@ -373,26 +373,30 @@ int show_line_range(struct line_range *lr, const char *module) | |||
373 | return -errno; | 373 | return -errno; |
374 | } | 374 | } |
375 | /* Skip to starting line number */ | 375 | /* Skip to starting line number */ |
376 | while (l < lr->start && ret >= 0) | 376 | while (l < lr->start) { |
377 | ret = show_one_line(fp, l++, true, false); | 377 | ret = show_one_line(fp, l++, true, false); |
378 | if (ret < 0) | 378 | if (ret < 0) |
379 | goto end; | 379 | goto end; |
380 | } | ||
380 | 381 | ||
381 | list_for_each_entry(ln, &lr->line_list, list) { | 382 | list_for_each_entry(ln, &lr->line_list, list) { |
382 | while (ln->line > l && ret >= 0) | 383 | for (; ln->line > l; l++) { |
383 | ret = show_one_line(fp, (l++) - lr->offset, | 384 | ret = show_one_line(fp, l - lr->offset, false, false); |
384 | false, false); | 385 | if (ret < 0) |
385 | if (ret >= 0) | 386 | goto end; |
386 | ret = show_one_line(fp, (l++) - lr->offset, | 387 | } |
387 | false, true); | 388 | ret = show_one_line(fp, l++ - lr->offset, false, true); |
388 | if (ret < 0) | 389 | if (ret < 0) |
389 | goto end; | 390 | goto end; |
390 | } | 391 | } |
391 | 392 | ||
392 | if (lr->end == INT_MAX) | 393 | if (lr->end == INT_MAX) |
393 | lr->end = l + NR_ADDITIONAL_LINES; | 394 | lr->end = l + NR_ADDITIONAL_LINES; |
394 | while (l <= lr->end && !feof(fp) && ret >= 0) | 395 | while (l <= lr->end && !feof(fp)) { |
395 | ret = show_one_line(fp, (l++) - lr->offset, false, false); | 396 | ret = show_one_line(fp, l++ - lr->offset, false, false); |
397 | if (ret < 0) | ||
398 | break; | ||
399 | } | ||
396 | end: | 400 | end: |
397 | fclose(fp); | 401 | fclose(fp); |
398 | return ret; | 402 | return ret; |