[#36647] test/pathname/test_pathname.rb — TAKANO Mitsuhiro <takano32@...>
高野です。
[#36649] Embedding struct RArray — "Yugui (Yuki Sonoda)" <yugui@...>
-----BEGIN PGP SIGNED MESSAGE-----
[#36672] [Bug #616] instance_eval and Module#to_s — Shyouhei Urabe <redmine@...>
Bug #616: instance_eval and Module#to_s
[#36678] test_process.rb — TAKANO Mitsuhiro <takano32@...>
高野です。
まつもと ゆきひろです
高野です。
なかだです。
[#36685] [Bug #621] When to call Class#inherited — Shyouhei Urabe <redmine@...>
Bug #621: When to call Class#inherited
[#36691] [Bug:1.9] ArgumentError on "%c" % 0x80 — Tanaka Akira <akr@...>
"%c" % 0x80 が例外になります。
[#36697] [Bug:1.9] rb_io_fread does not work — "Yusuke ENDOH" <mame@...>
遠藤です。
[#36704] Assertion failed in array.c on mswin32 Ruby (trunk) — Masaki Suketa <masaki.suketa@...>
助田です。
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
[#36705] ruby1.9 on hppa build problem — Hideki Yamane <henrich@...>
こんにちは、
[#36706] Ruby on Vista — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
[#36716] [Bug #644] compile error on win32ole with VC++6 — Usaku NAKAMURA <redmine@...>
Bug #644: compile error on win32ole with VC++6
[#36739] r19786 (trunk): * lib/delegate.rb (Delegator): simplified and restored 1.8 — Fujioka <fuj@...>
藤岡です。
[#36750] [Bug #650] Marshal.load raises RegexpError — Shyouhei Urabe <redmine@...>
Bug #650: Marshal.load raises RegexpError
まつもと ゆきひろです
卜部です。
まつもと ゆきひろです
卜部です。
まつもと ゆきひろです
卜部です。
まつもと ゆきひろです
Yukihiro Matsumoto さんは書きました:
まつもと ゆきひろです
もとの正規表現にバグがあるのは認めますが、それに巻き込まれてでかいPStore
まつもと ゆきひろです
卜部です。
まつもと ゆきひろです
けいじゅ@いしつかです.
卜部です。
けいじゅ@いしつかです.
卜部です。
[#36753] [Bug #651] Regexp.new returns strange regexp object — Shyouhei Urabe <redmine@...>
Bug #651: Regexp.new returns strange regexp object
まつもと ゆきひろです
[#36764] Re: [ruby-cvs:27036] Ruby:r19818 (trunk): * transcode.c (str_transcode0): String#encode without argument now — Martin Duerst <duerst@...>
まつもとさん、こんばんは。
まつもと ゆきひろです
まつもとさん、こんにちは。
In article <6.0.0.20.2.20081019182600.08d852a8@localhost>,
ファイル名は以前の議論の結果「変換可能でしたら変換、そうでなかったら
In article <6.0.0.20.2.20081021093404.0ada7bf8@localhost>,
At 10:47 08/10/21, Tanaka Akira wrote:
[#36768] Re: [ruby-cvs:27042] Ruby:r19824 (trunk): * array.c: recycle shared-array when it isn't referenced. — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
ワナベです。
[#36774] ConverterNotFoundError while making Ruby in Windows(trunk) — Masaki Suketa <masaki.suketa@...>
助田です。
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
In article <20081020173718.7FAD.C613B076@garbagecollect.jp>,
[#36789] [Bug #660] 数字を3桁ずつコンマで区切るsprintf書式指定 — "rubikitch ." <redmine@...>
Bug #660: 数字を3桁ずつコンマで区切るsprintf書式指定
[#36801] Marshal.load can't take GZipReader — arton <artonx@...>
artonです。
まつもと ゆきひろです
[#36813] Re: Ruby:r19863 (trunk): * regparse.c (parse_char_class): CCV_SB is only for single — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
[#36866] [Bug #676] 引数の有無によるIO#readの挙動の違い — _ wanabe <redmine@...>
Bug #676: 引数の有無によるIO#readの挙動の違い
[#36877] [Feature #679] Integer#to_s(:step=>3, :sep=>",") が欲しい — Martin Dürst <redmine@...>
チケット #679 が更新されました。 (by Martin Dürst)
[#36909] trunk SEGV nkf? — "WATANABE Tetsuya" <tetsuya.watanabe@...>
渡辺哲也です。
[#36914] prefix math_* funcs — Tadashi Saito <shiba@...2.accsnet.ne.jp>
斎藤と申します。
> complex.cで使うために、いくつか数学関数からstaticがとれたようですが、
[#36915] prefix signal_buff — Tadashi Saito <shiba@...2.accsnet.ne.jp>
斎藤と申します。
[#36917] VMまわりのシンボルにも「rb_」を付けてほしい — Tadashi Saito <shiba@...2.accsnet.ne.jp>
斎藤と申します。連投ですみません。
[#36932] [Bug #6] sprintf() of %f on Windows(MSVCRT) — _ wanabe <redmine@...>
チケット #6 が更新されました。 (by _ wanabe)
[#36937] initial value of $. — "Yugui (Yuki Sonoda)" <yugui@...>
Yuguiです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#36993] [Bug:1.9] removing Exception#initialize dumps core — "Yusuke ENDOH" <mame@...>
遠藤です。
[#37007] [Bug:1.9] 1+1+1+...+1 dumps core — "Yusuke ENDOH" <mame@...>
遠藤です。
はじめまして、よしおかと申します。
遠藤です。
こんにちは、なかむら(う)です。
[ruby-dev:36935] Re: [Bug #6] sprintf() of %f on Windows(MSVCRT)
ワナベです。
2008/10/26 15:45 Nobuyoshi Nakada <nobu@ruby-lang.org>:
> At Sun, 26 Oct 2008 10:35:17 +0900,
> _ wanabe wrote in [ruby-dev:36932]:
>> vsnprintf.c 中の vsnprintf を外に出すやり方があまりうまくないように思うので
>> 何かうまい方法をご存知の方は教えていただけるとありがたいです。
>
> win32/Makefile.subのHAVE_VSNPRINTFを消せばmissingのほうを使うよ
> うになるはずです。
mingw では configure で生成されたconfig.h を使うようですし
bcc では msvcrt を使わないようなので、それは最後の手段にしたいと思います。
ですがアドバイスのおかげでうまくいかない原因がわかりました。ありがとうございます。
vsnprintf を rb_win32_vsnprintf で上書きしなければいいだけだったようです。
> ちなみに、missing/vsnprintf.cへの修正はどういうものでしょうか。
説明不足でした。すみません。
test_sprintf_comb.rb が通るように修正しました。具体的には以下の通りです。
(1) sprintf("%e", -1.0000000000000000159e+100)
->修正前:"-1e+100" 修正後:"-1.000000e+100"
(2) sprintf("%.0f", 0.010000000000000000208)
->修正前:"0." 修正後:"0"
(3) sprintf("% #+-0.f", -0)
->修正前:"-0" 修正後:"-0."
(4) sprintf("%.0G", 1)
->修正前:"1E+00" 修正後:"1"
ですが今見直してみると、(1)の修正法が冗長かつ意味不明でしたので
先の rb_win32_vsnprintf の件と併せてパッチを書き直しました。
Index: include/ruby/win32.h
===================================================================
--- include/ruby/win32.h (revision 19941)
+++ include/ruby/win32.h (working copy)
@@ -243,7 +243,11 @@
extern void rb_w32_free_environ(char **);
extern int rb_w32_map_errno(DWORD);
+#if (defined(_MSC_VER) && defined(_DLL)) || defined(__MSVCRT__)
+#undef HAVE_VSNPRINTF
+#else
#define vsnprintf(s,n,f,l) rb_w32_vsnprintf(s,n,f,l)
+#endif
#define snprintf rb_w32_snprintf
extern int rb_w32_vsnprintf(char *, size_t, const char *, va_list);
extern int rb_w32_snprintf(char *, size_t, const char *, ...);
Index: sprintf.c
===================================================================
--- sprintf.c (revision 19941)
+++ sprintf.c (working copy)
@@ -1018,7 +1018,7 @@
need += 20;
CHECK(need);
- sprintf(&buf[blen], fbuf, fval);
+ snprintf(&buf[blen], need, fbuf, fval);
blen += strlen(&buf[blen]);
}
break;
Index: numeric.c
===================================================================
--- numeric.c (revision 19941)
+++ numeric.c (working copy)
@@ -530,12 +530,12 @@
else if(isnan(value))
return rb_usascii_str_new2("NaN");
- sprintf(buf, "%#.15g", value); /* ensure to print decimal point */
+ snprintf(buf, 32, "%#.15g", value); /* ensure to print decimal point */
if (!(e = strchr(buf, 'e'))) {
e = buf + strlen(buf);
}
if (!ISDIGIT(e[-1])) { /* reformat if ended with decimal point
(ex 111111111111111.) */
- sprintf(buf, "%#.14e", value);
+ snprintf(buf, 32, "%#.14e", value);
if (!(e = strchr(buf, 'e'))) {
e = buf + strlen(buf);
}
@@ -1548,7 +1548,7 @@
char buf[24];
char *s;
- sprintf(buf, "%-.10g", RFLOAT_VALUE(val));
+ snprintf(buf, 24, "%-.10g", RFLOAT_VALUE(val));
if ((s = strchr(buf, ' ')) != 0) *s = '\0';
rb_raise(rb_eRangeError, "float %s out of range of integer", buf);
}
@@ -1694,7 +1694,7 @@
char buf[24];
char *s;
- sprintf(buf, "%-.10g", RFLOAT_VALUE(val));
+ snprintf(buf, 24, "%-.10g", RFLOAT_VALUE(val));
if ((s = strchr(buf, ' ')) != 0) *s = '\0';
rb_raise(rb_eRangeError, "float %s out of range of long long", buf);
}
Index: missing/vsnprintf.c
===================================================================
--- missing/vsnprintf.c (revision 19941)
+++ missing/vsnprintf.c (working copy)
@@ -753,6 +753,8 @@
#ifdef FLOATING_POINT
case 'e': /* anomalous precision */
case 'E':
+ if (prec != 0)
+ flags |= ALT;
prec = (prec == -1) ?
DEFPREC + 1 : prec + 1;
/* FALLTHROUGH */
@@ -782,7 +784,7 @@
cp = cvt(_double, prec, flags, &softsign,
&expt, ch, &ndig);
if (ch == 'g' || ch == 'G') {
- if (expt <= -4 || expt > prec)
+ if (expt <= -4 || (expt > prec && expt > 1))
ch = (ch == 'g') ? 'e' : 'E';
else
ch = 'g';
@@ -798,6 +800,8 @@
size = expt;
if (prec || flags & ALT)
size += prec + 1;
+ } else if (!prec) { /* "0" */
+ size = 1;
} else /* "0.X" */
size = prec + 2;
} else if (expt >= ndig) { /* fixed g fmt */
@@ -1008,13 +1012,15 @@
if (ch >= 'f') { /* 'f' or 'g' */
if (_double == 0) {
/* kludge for __dtoa irregularity */
- if (prec == 0 ||
+ if (ndig <= 1 &&
(flags & ALT) == 0) {
PRINT("0", 1);
} else {
PRINT("0.", 2);
PAD(ndig - 1, zeroes);
}
+ } else if (expt == 0 && ndig == 0 && (flags & ALT) == 0) {
+ PRINT("0", 1);
} else if (expt <= 0) {
PRINT("0.", 2);
PAD(-expt, zeroes);
--
ワナベ