diff src/editfns.c @ 107504:3c55036637ec

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 Mon, 15 Mar 2010 11:51:48 -0400
parents e3970f7c14d4
children a224d29f3386
line wrap: on
line diff
--- a/src/editfns.c	Mon Mar 15 11:45:03 2010 +0100
+++ b/src/editfns.c	Mon Mar 15 11:51:48 2010 -0400
@@ -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')