# [PATCH] builtin/blame.c::find_copy_in_blob: no need to scan for region end

2 messages from 2014-02-22 to 2014-02-25. Participants: David Kastrup, Junio C Hamano.
Thread: https://gitlist.dev/t/35936

## David Kastrup, 2014-02-22 16:02

Subject: [PATCH] builtin/blame.c::find_copy_in_blob: no need to scan for region end
Message-ID: <1393084967-23408-1-git-send-email-dak@gnu.org>
URL: https://gitlist.dev/e/1393084967-23408-1-git-send-email-dak%40gnu.org

```
The region end can be looked up just like its beginning.

Signed-off-by: David Kastrup <dak@gnu.org>
---
 builtin/blame.c | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/builtin/blame.c b/builtin/blame.c
index e44a6bb..96716dd 100644
--- a/builtin/blame.c
+++ b/builtin/blame.c
@@ -939,7 +939,6 @@ static void find_copy_in_blob(struct scoreboard *sb,
 			      mmfile_t *file_p)
 {
 	const char *cp;
-	int cnt;
 	mmfile_t file_o;
 	struct handle_split_cb_data d;
 
@@ -950,13 +949,7 @@ static void find_copy_in_blob(struct scoreboard *sb,
 	 */
 	cp = nth_line(sb, ent->lno);
 	file_o.ptr = (char *) cp;
-	cnt = ent->num_lines;
-
-	while (cnt && cp < sb->final_buf + sb->final_buf_size) {
-		if (*cp++ == '\n')
-			cnt--;
-	}
-	file_o.size = cp - file_o.ptr;
+	file_o.size = nth_line(sb, ent->lno + ent->num_lines) - cp;
 
 	/*
 	 * file_o is a part of final image we are annotating.
-- 
1.8.3.2

```

## Junio C Hamano, 2014-02-25 17:51

Subject: Re: [PATCH] builtin/blame.c::find_copy_in_blob: no need to scan for region end
Message-ID: <xmqq61o36pxq.fsf@gitster.dls.corp.google.com>
URL: https://gitlist.dev/e/xmqq61o36pxq.fsf%40gitster.dls.corp.google.com
In-Reply-To: <1393084967-23408-1-git-send-email-dak@gnu.org>

```
David Kastrup <dak@gnu.org> writes:

> The region end can be looked up just like its beginning.
>
> Signed-off-by: David Kastrup <dak@gnu.org>
> ---
>  builtin/blame.c | 9 +--------
>  1 file changed, 1 insertion(+), 8 deletions(-)

Yay, code reduction!  Thanks.

> diff --git a/builtin/blame.c b/builtin/blame.c
> index e44a6bb..96716dd 100644
> --- a/builtin/blame.c
> +++ b/builtin/blame.c
> @@ -939,7 +939,6 @@ static void find_copy_in_blob(struct scoreboard *sb,
>  			      mmfile_t *file_p)
>  {
>  	const char *cp;
> -	int cnt;
>  	mmfile_t file_o;
>  	struct handle_split_cb_data d;
>  
> @@ -950,13 +949,7 @@ static void find_copy_in_blob(struct scoreboard *sb,
>  	 */
>  	cp = nth_line(sb, ent->lno);
>  	file_o.ptr = (char *) cp;
> -	cnt = ent->num_lines;
> -
> -	while (cnt && cp < sb->final_buf + sb->final_buf_size) {
> -		if (*cp++ == '\n')
> -			cnt--;
> -	}
> -	file_o.size = cp - file_o.ptr;
> +	file_o.size = nth_line(sb, ent->lno + ent->num_lines) - cp;
>  
>  	/*
>  	 * file_o is a part of final image we are annotating.

```
