# [PATCH] Increase length of function name buffer

3 messages from 2006-11-23 to 2006-11-24. Participants: Andy Parkins, Junio C Hamano.
Thread: https://gitlist.dev/t/43265

## Andy Parkins, 2006-11-23 10:05

Subject: [PATCH] Increase length of function name buffer
Message-ID: <200611231005.17859.andyparkins@gmail.com>
URL: https://gitlist.dev/e/200611231005.17859.andyparkins%40gmail.com

```
In xemit.c:xdl_emit_diff() a buffer for showing the function name as
commentary is allocated; this buffer was 40 characters.  This is a bit
small; particularly for C++ function names where there is often an
identical prefix (like void LongNamespace::LongClassName) on multiple
functions, which makes the context the same everywhere.  In other words
the context is useless.  This patch increases that buffer to 80
characters - which may still not be enough, but is better

Signed-off-by: Andy Parkins <andyparkins@gmail.com>
---
 xdiff/xemit.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/xdiff/xemit.c b/xdiff/xemit.c
index 07995ec..e291dc7 100644
--- a/xdiff/xemit.c
+++ b/xdiff/xemit.c
@@ -118,7 +118,7 @@ int xdl_emit_diff(xdfenv_t *xe, xdchange_t *xscr, xdemitcb_t *ecb,
 		  xdemitconf_t const *xecfg) {
 	long s1, s2, e1, e2, lctx;
 	xdchange_t *xch, *xche;
-	char funcbuf[40];
+	char funcbuf[80];
 	long funclen = 0;
 
 	if (xecfg->flags & XDL_EMIT_COMMON)
-- 
1.4.3.GIT-dirty

```

## Junio C Hamano, 2006-11-23 20:53

Subject: Re: [PATCH] Increase length of function name buffer
Message-ID: <7vbqmxkhpk.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vbqmxkhpk.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <200611231005.17859.andyparkins@gmail.com>

```
Andy Parkins <andyparkins@gmail.com> writes:

> In xemit.c:xdl_emit_diff() a buffer for showing the function name as
> commentary is allocated; this buffer was 40 characters.  This is a bit
> small; particularly for C++ function names where there is often an
> identical prefix (like void LongNamespace::LongClassName) on multiple
> functions, which makes the context the same everywhere.  In other words
> the context is useless.  This patch increases that buffer to 80
> characters - which may still not be enough, but is better.
>
> Signed-off-by: Andy Parkins <andyparkins@gmail.com>

I agree this is a good problem to address.

I wonder however which is easier to read, a loooong heading line
as you do in this patch, or "...TailOfVeryLongClassName::method"
that still fits on a single line without terminal line-wrapping.
Especially with our default settings that runs "less" with -S to
truncate the right hand side of a long line, truncating at the
top (instead of at the tail as we currently do) might be easier
to read.

Not rejecting your implementation and asking to change the
patch; asking for opinions from the list.

```

## Junio C Hamano, 2006-11-24 06:47

Subject: Re: [PATCH] Increase length of function name buffer
Message-ID: <7vk61le3xr.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vk61le3xr.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <7vbqmxkhpk.fsf@assigned-by-dhcp.cox.net>

```
Junio C Hamano <junkio@cox.net> writes:

> Andy Parkins <andyparkins@gmail.com> writes:
>
>> In xemit.c:xdl_emit_diff() a buffer for showing the function name as
>> commentary is allocated; this buffer was 40 characters.  This is a bit
>> small;...
 >...
> I wonder however which is easier to read, a loooong heading line
> as you do in this patch, or "...TailOfVeryLongClassName::method"
> that still fits on a single line without terminal line-wrapping.

Nah, I was stupid again.

It would give something silly like the attached patch if we do
what I suggested (notice the function header line which does not
give us anything useful).

Will apply your version as is.

---

diff --git a/xdiff/xemit.c b/xdiff/xemit.c
index 07995ec..30d3df1 100644
--- a/xdiff/xemit.c
+++ b/xdiff/xemit.c
@@ -87,8 +87,10 @@ long i, char *buf, long sz, long *ll) {
 		    (isalpha((unsigned char)*rec) || /* identifier? */
 		     *rec == '_' ||	/* also identifier? */
 		     *rec == '$')) {	/* mysterious GNU diff's invention */
-			if (len > sz)
+			if (len > sz) {
+				rec += len - sz;
 				len = sz;
+			}
 			while (0 < len && isspace((unsigned char)rec[len - 1]))
 				len--;
 			memcpy(buf, rec, len);

```
