From 07aecb715ad9ddae61393bfa86920438f198f121 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net>
Date: Sat, 5 Oct 1996 02:52:59 +0200
Subject: [PATCH] sprintf now handles zeros in format string

Rev: src/modules/sprintf/sprintf.c:1.3
Rev: src/modules/sprintf/testsuite.in:1.6
---
 src/modules/sprintf/sprintf.c    | 2 +-
 src/modules/sprintf/testsuite.in | 2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/modules/sprintf/sprintf.c b/src/modules/sprintf/sprintf.c
index 60525b2e35..851113b1e7 100644
--- a/src/modules/sprintf/sprintf.c
+++ b/src/modules/sprintf/sprintf.c
@@ -473,7 +473,7 @@ static string low_pike_sprintf(char *format,
 
     if(*a!='%')
     {
-      for(e=0;a[e] && a[e]!='%';e++);
+      for(e=0;a[e]!='%' && a+e<format+format_len;e++);
       fsp->b=a;
       fsp->len=e;
       fsp->width=e;
diff --git a/src/modules/sprintf/testsuite.in b/src/modules/sprintf/testsuite.in
index b45ca67b77..677322b3be 100644
--- a/src/modules/sprintf/testsuite.in
+++ b/src/modules/sprintf/testsuite.in
@@ -49,6 +49,8 @@ test_eq(sprintf("%d %<d %<d",2),"2 2 2")
 test_true(stringp(sprintf("%O",({1,2,"foo"}))))
 test_true(stringp(sprintf("%O",([1:2,"foo":"bar"]))))
 
+test_eq(sprintf("test \0 \n"),"test \0 \n")
+
 dnl . : and ; hasn't been tested
 dnl ^, @ and _ hasn't been tested yet
 test_eval_error(sprintf("%d"))
-- 
GitLab