You wrote: > When cdebconf displays a template with multiline descriptions, the last > n(n== the number of of newlines in the original extended_description) > characters of the description will be shown after it. > The origin of the problem is the remove_newline function in template.c, which > doeasn't apply a \0 after the truncated string.
We don't see this problem in day-to-day use of cdebconf. Do you have a way to reproduce the problem? The code is: in = out = text; for (; *in != 0; in++) { *out = *in; if (*in == '\n') { if (*(in+1) == '.' && *(in+2) == '\n') { out++; *out = *in; in+=2; asis=0; } else if (*(in+1) == ' ') asis=1; else if (asis) asis=0; else { if (*(in+1) != 0) *out = ' '; else *out = 0; } } out++; } I assume the string ends in a newline since it's an extended description string. (Haven't checked that.) If it does then the last character processed will be that newline, and it will normally end up setting *out = 0 which \0 terminates the string correctly. Hmm, this might fail with a string like this: "xxx\n \n" In that case, asis will be set when it encounters the "\n " and then the final "\n" will be copied in but nothing else done since asis is set. One other failure mode would be a string like "xxx\n.\n", which would similarly avoid the \0 termination. Are these the cases you had in mind or am I missing a worse failure mode? -- see shy jo
signature.asc
Description: Digital signature