Mercurial > emacs
changeset 107388:969a1a50d14c
Fix bug in `format' (Bug#5710).
* editfns.c (Fformat): Account for string precision when computing
field width (Bug#5710).
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Sat, 13 Mar 2010 14:54:29 -0500 |
parents | 1b280b2e1b75 |
children | 51ddd70d1fa1 |
files | src/ChangeLog src/editfns.c |
diffstat | 2 files changed, 9 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog Sat Mar 13 10:29:13 2010 -0500 +++ b/src/ChangeLog Sat Mar 13 14:54:29 2010 -0500 @@ -1,3 +1,8 @@ +2010-03-13 Andreas Politz <politza@fh-trier.de> (tiny change) + + * editfns.c (Fformat): Account for string precision when computing + field width (Bug#5710). + 2010-03-12 Chong Yidong <cyd@stupidchicken.com> * xfns.c (Fx_create_frame): Set default to Qright.
--- a/src/editfns.c Sat Mar 13 10:29:13 2010 -0500 +++ b/src/editfns.c Sat Mar 13 14:54:29 2010 -0500 @@ -3782,7 +3782,11 @@ to be as large as is calculated here. Easy check for the case PRECISION = 0. */ thissize = precision[n] ? CONVERTED_BYTE_SIZE (multibyte, args[n]) : 0; + /* The precision also constrains how much of the argument + string will finally appear (Bug#5710). */ actual_width = lisp_string_width (args[n], -1, NULL, NULL); + if (precision[n] != -1) + actual_width = min(actual_width,precision[n]); } /* Would get MPV otherwise, since Lisp_Int's `point' to low memory. */ else if (INTEGERP (args[n]) && *format != 's')