threads / patch / 43265

patchIncrease length of function name buffer

Subject: [PATCH] Increase length of function name buffer

## tl;dr

3 messages between Nov 23, 2006 and Nov 24, 2006. Diffs are folded; open one to read it.

replies: 2people: 2as markdown or json

Andy Parkins· Nov 23, 2006, 10:05 UTC · lore

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(-)
Show changes to xdiff/xemit.c +1 −1
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· Nov 23, 2006, 20:53 UTC · re: Andy Parkins · lore

Re: [PATCH] Increase length of function name buffer

Andy Parkins <andyparkins@gmail.com> writes:
Show 9 quoted lines
> 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· Nov 24, 2006, 06:47 UTC · re: Junio C Hamano · lore

Re: [PATCH] Increase length of function name buffer

Junio C Hamano <junkio@cox.net> writes:
Show 5 quoted lines
> 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.
---
Show changes to xdiff/xemit.c +3 −1
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);

← back to recent threads