[Date Prev] [Date Index] [Date Next]
[Thread Prev] [Thread Index] [Thread Next]

[xyzzy:09204] Re: formatの動作



こんにちは。
NANRIです。

もう一箇所見つけました。
"~g" でNULL文字が出力される場合があります。

(format nil "~10g" 1.23456d+38)
=>"^@^@^@^@^@^@    "            ; ^@と書いているところは実際は#\NUL

以上よろしくお願いします。

-- 
NANRI
southly@xxxxxxxxxxxx
http://raido.sakura.ne.jp/southly/rn/

--- lprint.cc~	Sun Mar 10 04:43:29 2002
+++ lprint.cc	Tue Nov 21 01:13:18 2006
@@ -2397,6 +2397,7 @@
   if (!param_is_given (0) && !param_is_given (1))
     {
       print_control pc (10);
+      if (atsign && f.sign > 0) stream.add('+');
       print_flonum (stream, pc, lnumber);
       return;
     }
@@ -2528,18 +2529,18 @@
       return;
     }
 
-  if (!param_is_given (0) && !param_is_given (1) && !param_is_given (2))
-    {
-      print_control pc (10);
-      print_flonum (stream, pc, lnumber);
-      return;
-    }
+//   if (!param_is_given (0) && !param_is_given (1) && !param_is_given (2))
+//     {
+//       print_control pc (10);
+//       print_flonum (stream, pc, lnumber);
+//       return;
+//     }
 
   if (!param_is_given (2))
     e = exp_width (f.exp - k + 1);
 
   if (!param_is_given (1))
-    d = f.be - f.b0;
+    d = f.be - f.b0 - 1;
   if (k > 0)
     d = max (d, k - 1);
   else if (k < 0)
@@ -2667,8 +2668,13 @@
       param[1].type = FMT_INT;
       param[1].value = dd;
       param[2].type = FMT_NIL;
-      param[3].type = FMT_CHAR;
-      param[3].value = overflow;
+      if (param_is_given (4))
+        {
+          param[3].type = FMT_CHAR;
+          param[3].value = overflow;
+        }
+      else
+        param[3].type = FMT_NIL;
       param[4].type = FMT_CHAR;
       param[4].value = padchar;
       nparams = 5;

Index Home