[#6728] Ruby 1.3.3-990507 — matz <matz@...>

Ruby 1.3.3-990507 is out, check out:

34 messages 1999/05/07
[#6731] Re: Ruby 1.3.3-990507 — Katsuyuki Komatsu <komatsu@...> 1999/05/07

小松です。

[#6779] Re: private inner class (Re: Re: class def in class def) — Koji Oda <oda@...1.qnes.nec.co.jp>

小田@QNES です。

13 messages 1999/05/13

[#6789] Ruby 1.3.3-990513 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.3-990513 is out, check out:

59 messages 1999/05/13
[#6811] Re: Ruby 1.3.3-990513 — Koji Oda <oda@...1.qnes.nec.co.jp> 1999/05/14

小田@QNES です。

[#6814] Re: Ruby 1.3.3-990513 — matz@... (Yukihiro Matsumoto) 1999/05/15

まつもと ゆきひろです

[#6821] Re: Ruby 1.3.3-990513 — Koji Oda <oda@...1.qnes.nec.co.jp> 1999/05/16

小田@QNES です。

[#6790] Re: Ruby 1.3.3-990513 — Katsuyuki Komatsu <komatsu@...> 1999/05/13

小松です。

[#6891] Ruby 1.3.3-990518 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.3-990518 is out, check out:

19 messages 1999/05/18

[#6919] ext/socket/getaddrinfo.c tiny fix — Jun-ichiro itojun Hagino <itojun@...>

ext/socket/getaddrinfo.cに以下のpatchをおねがいします。

22 messages 1999/05/20
[#6921] Re: ext/socket/getaddrinfo.c tiny fix — Jun-ichiro itojun Hagino <itojun@...> 1999/05/20

[#7034] Ruby 1.3.4-990531 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.4-990531 is out, check out:

25 messages 1999/05/31

[ruby-dev:6859] signed/unsigned char warning

From: Katsuyuki Komatsu <komatsu@...>
Date: 1999-05-17 06:28:05 UTC
List: ruby-dev #6859
小松です。

AIXのgccのデフォルトのcharの型がunsignedのようなので、
以下のようなwarningが出てしまいます。
ccもcharデフォルトはunsigned。

        gcc -O2 -I. -I. -I/usr/local/include -c y.tab.c
parse.y: In function `read_escape':
parse.y:1886: warning: comparison is always 0 due to limited range of data type
parse.y: In function `yylex':
parse.y:3132: warning: comparison is always 1 due to limited range of data type
    ……
        gcc -O2 -I. -I. -I/usr/local/include  -c string.c
string.c: In function `rb_str_succ':
string.c:715: warning: comparison is always 0 due to limited range of data type
string.c: In function `tr_trans':
string.c:1718: warning: comparison is always 0 due to limited range of data type

下の例のようにcharがunsignedだと、char c = -1;
の後の(c == -1)はfalseです。

オプションを指定して、
    env CFLAGS='-O2 -fsigned-char' ./configure \\
	--with-readline-dir=/usr/local
とか、
    env CC=cc CFLAGS='-O -qchars=signed -qmaxmem=8192' ./configure \
	    --with-readline-dir=/usr/local
とかすれば済みますが、
parse.y, string.cの-1を(char)-1にした方が安全かな?

	/	/	/

% echo `uname -s; oslevel`
AIX 4.1.3.0
% cat char.c
#include <stdio.h>
int main()
{
    char c = -1;
    if (c == -1)
	printf("c == -1\n");
    else
	printf("c != -1\n");
    if (c == (char)-1)
	printf("c == (char)-1\n");
    else
	printf("c != (char)-1\n");
    return 0;
}
% cc char.c; ./a.out
c != -1
c == (char)-1
% cc -qchars=unsigned char.c; ./a.out
c != -1
c == (char)-1
% cc -qchars=signed char.c; ./a.out
c == -1
c == (char)-1
% gcc char.c; ./a.out
char.c: In function `main':
char.c:5: warning: comparison is always 0 due to limited range of data type
c != -1
c == (char)-1
% gcc -funsigned-char char.c; ./a.out
char.c: In function `main':
char.c:5: warning: comparison is always 0 due to limited range of data type
c != -1
c == (char)-1
% gcc -fsigned-char char.c; ./a.out
c == -1
c == (char)-1
% 

--
小松克行 / Katsuyuki Komatsu <komatsu@sarion.co.jp>

In This Thread

Prev Next