From ba6485e1114acb8b401bf960cc14b8541818ac20 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net>
Date: Sun, 20 Jul 1997 16:56:35 -0700
Subject: [PATCH] bugfix in %f

Rev: src/modules/sprintf/sprintf.c:1.13
Rev: src/modules/sprintf/testsuite.in:1.8
---
 src/modules/sprintf/sprintf.c    | 6 ++++--
 src/modules/sprintf/testsuite.in | 1 +
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/modules/sprintf/sprintf.c b/src/modules/sprintf/sprintf.c
index 85c9486d00..f3ef01d753 100644
--- a/src/modules/sprintf/sprintf.c
+++ b/src/modules/sprintf/sprintf.c
@@ -96,7 +96,7 @@
 */
 
 #include "global.h"
-RCSID("$Id: sprintf.c,v 1.12 1997/06/12 01:35:40 hubbe Exp $");
+RCSID("$Id: sprintf.c,v 1.13 1997/07/20 23:56:32 hubbe Exp $");
 #include "error.h"
 #include "array.h"
 #include "svalue.h"
@@ -106,6 +106,7 @@ RCSID("$Id: sprintf.c,v 1.12 1997/06/12 01:35:40 hubbe Exp $");
 #include "constants.h"
 #include "interpret.h"
 #include "pike_memory.h"
+#include "pike_macros.h"
 
 #define FORMAT_INFO_STACK_SIZE 200
 #define RETURN_SHARED_STRING
@@ -714,7 +715,8 @@ static string low_pike_sprintf(char *format,
       case 'f':
       case 'g':
 	DO_OP();
-	fsp->b=(char *)xalloc(fsp->width+10);
+	fsp->b=(char *)xalloc(100+MAXIMUM(fsp->width,8)+
+			      MAXIMUM(fsp->precision,3));
 	sprintf(buffer,"%%*.*%c",*a);
 	GET_FLOAT(tf);
 	sprintf(fsp->b,buffer,
diff --git a/src/modules/sprintf/testsuite.in b/src/modules/sprintf/testsuite.in
index db14290640..fc6f12afe5 100644
--- a/src/modules/sprintf/testsuite.in
+++ b/src/modules/sprintf/testsuite.in
@@ -1,5 +1,6 @@
 // - sprintf module
 test_true(stringp(sprintf("")))
+test_true(sprintf("--real %1.20f --imaginary %1.20f --scale %1.20f\n",-0.9,-0.9,-0.9))
 test_eq(sprintf("%d",1),"1")
 test_eq(sprintf("%%"),"%")
 test_eq(sprintf("%d",1),"1")
-- 
GitLab