diff --git a/src/modules/sprintf/sprintf.c b/src/modules/sprintf/sprintf.c
index 76dce1e26dee2673cf7c1cd792720b0b1972f922..d0f4b00d89ef3c4645357e648eb840a0b7270c79 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.18 1998/04/28 07:50:03 hubbe Exp $");
+RCSID("$Id: sprintf.c,v 1.19 1998/05/06 01:04:36 hubbe Exp $");
 #include "error.h"
 #include "array.h"
 #include "svalue.h"
@@ -643,7 +643,8 @@ static string low_pike_sprintf(char *format,
 	    s=sp;
 	    if(q)
 	    {
-	      ref_push_array(q->array);
+	      q->array->refs++;
+	      push_array_items(q->array);
 	    }else{
 	      array_index_no_free(sp,w,tmp);
 	      sp++;
diff --git a/src/modules/sprintf/testsuite.in b/src/modules/sprintf/testsuite.in
index 3e33ffa8fea782fffee42de993a3ebcd58b7ecf4..5239a2129643c7828b494a38778ad6bfd406c892 100644
--- a/src/modules/sprintf/testsuite.in
+++ b/src/modules/sprintf/testsuite.in
@@ -56,11 +56,12 @@ test_eq(sprintf("test \0"),"test \0")
 test_eq(sprintf("%~*n","f",5),"fffff")
 test_eq(sprintf("%'\000'*n",5),"\000\000\000\000\000")
 
-test_true([[sprintf("%{%{%s%}\n%}",({({"hej"}),({"hop"})}))]])
-test_true([[sprintf("%{%{%s%}\n%}",({({"hej"}),({"hop"})}))]])
-test_true([[sprintf("%{%{%s%}\n%}",({({"hej"}),({"hop"})}))]])
-test_true([[sprintf("%{%{%s%}\n%}",({({"hej"}),({"hop"})}))]])
-test_true([[sprintf("%{%{%s%}\n%}",({({"hej"}),({"hop"})}))]])
+test_true([[sprintf("%{%{%s%}\n%}",({({({"hej"})}),({({"hop"})})}))]])
+test_true([[sprintf("%{%{%s%}\n%}",({({({"hej"})}),({({"hop"})})}))]])
+test_true([[sprintf("%{%{%s%}\n%}",({({({"hej"})}),({({"hop"})})}))]])
+test_true([[sprintf("%{%{%s%}\n%}",({({({"hej"})}),({({"hop"})})}))]])
+
+test_eq([[sprintf("%{%d %d %d\n%}",({ ({1,2,3}), ({4,5,6}) }) )]],"1 2 3\n4 5 6\n")
 
 dnl . : and ; hasn't been tested
 dnl ^, @ and _ hasn't been tested yet