[#20036] Re: Roundoff problem with Float and Marshal — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

16 messages 2003/04/18
[#20045] Re: Roundoff problem with Float and Marshal — nobu.nakada@... 2003/04/20

なかだです。

[#20063] Re: Roundoff problem with Float and Marshal — matz@... (Yukihiro Matsumoto) 2003/04/22

まつもと ゆきひろです

[#20097] jcode.rb — akira yamada / やまだあきら <akira@...>

25 messages 2003/04/26
[#20098] Re: jcode.rb — matz@... (Yukihiro Matsumoto) 2003/04/27

まつもと ゆきひろです

[#20105] Re: jcode.rb — WATANABE Hirofumi <eban@...> 2003/04/28

わたなべです。

[#20108] Re: jcode.rb — matz@... (Yukihiro Matsumoto) 2003/04/28

まつもと ゆきひろです

[ruby-dev:20027] Re: File::expand_path amok

From: WATANABE Hirofumi <eban@...>
Date: 2003-04-14 10:35:27 UTC
List: ruby-dev #20027
わたなべです。

nobu.nakada@nifty.ne.jp <nobu.nakada@nifty.ne.jp> writes:

> -#define BUFCHECK(cond) while (cond) {\
> +#define BUFCHECK(cond) if (cond) {
>      long bdiff = p - buf;\
> -    buflen *= 2;\
> +    do {buflen *= 2;} while (cond);\
>      rb_str_resize(result, buflen);\
>      buf = RSTRING(result)->ptr;\

そこをループにしちゃうとどう考えても無限ループになります。
#\も足りないような。

> @@ -1678,5 +1678,7 @@ file_expand_path(fname, dname, result)
>  #endif
>  	    if (s > b) {
> +		long rootdiff = root - buf;
>  		BUFCHECK(p + (s-b+1) >= pend);
> +		root = buf + rootdiff;
>  		memcpy(++p, b, s-b);
>  		p += s-b;

これだけでたぶんok。

-- 
わたなべひろふみ

In This Thread

Prev Next