mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* bignum.c (get2comp): calculate proper 2's complement for
negative numbers. a bug in normalizing negative numbers reported from Honda Hiroki <hhonda@ipflex.com>. * ext/socket/socket.c (ruby_getaddrinfo__aix): merged a patch from KUBO Takehiro <kubo@jiubao.org> to support AIX. [ruby-list:40832] * lib/yaml/rubytypes.rb (Array::to_yaml): merged a patch from Tilman Sauerbeck <tilman@code-monkey.de>. [ruby-core:05055] * lib/yaml/rubytypes.rb (Hash::to_yaml): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@8592 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
aac8fbf09f
commit
f105a01a3e
6 changed files with 58 additions and 10 deletions
18
ChangeLog
18
ChangeLog
|
@ -1,3 +1,9 @@
|
||||||
|
Wed Jun 8 11:11:34 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* bignum.c (get2comp): calculate proper 2's complement for
|
||||||
|
negative numbers. a bug in normalizing negative numbers
|
||||||
|
reported from Honda Hiroki <hhonda@ipflex.com>.
|
||||||
|
|
||||||
Wed Jun 8 08:33:10 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Wed Jun 8 08:33:10 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* enum.c (enum_min_by, enum_max_by): return nil if no iteration.
|
* enum.c (enum_min_by, enum_max_by): return nil if no iteration.
|
||||||
|
@ -7,6 +13,18 @@ Wed Jun 8 08:33:10 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* eval.c (backtrace): skip successive frames sharing same node.
|
* eval.c (backtrace): skip successive frames sharing same node.
|
||||||
|
|
||||||
|
Wed Jun 8 00:15:08 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* ext/socket/socket.c (ruby_getaddrinfo__aix): merged a patch from
|
||||||
|
KUBO Takehiro <kubo@jiubao.org> to support AIX. [ruby-list:40832]
|
||||||
|
|
||||||
|
Wed Jun 8 00:09:01 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* lib/yaml/rubytypes.rb (Array::to_yaml): merged a patch from
|
||||||
|
Tilman Sauerbeck <tilman@code-monkey.de>. [ruby-core:05055]
|
||||||
|
|
||||||
|
* lib/yaml/rubytypes.rb (Hash::to_yaml): ditto.
|
||||||
|
|
||||||
Wed Jun 8 00:00:01 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
|
Wed Jun 8 00:00:01 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
* ext/curses/curses.c (curses_insertln): merged a patch from
|
* ext/curses/curses.c (curses_insertln): merged a patch from
|
||||||
|
|
10
bignum.c
10
bignum.c
|
@ -85,7 +85,7 @@ get2comp(x, carry) /* get 2's complement */
|
||||||
if ((ds[RBIGNUM(x)->len-1] & (1<<(BITSPERDIG-1))) == 0) {
|
if ((ds[RBIGNUM(x)->len-1] & (1<<(BITSPERDIG-1))) == 0) {
|
||||||
REALLOC_N(RBIGNUM(x)->digits, BDIGIT, ++RBIGNUM(x)->len);
|
REALLOC_N(RBIGNUM(x)->digits, BDIGIT, ++RBIGNUM(x)->len);
|
||||||
ds = BDIGITS(x);
|
ds = BDIGITS(x);
|
||||||
ds[RBIGNUM(x)->len-1] = ~0;
|
ds[RBIGNUM(x)->len-1] = RBIGNUM(x)->sign ? ~0 : 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1055,8 +1055,8 @@ rb_big_neg(x)
|
||||||
|
|
||||||
if (!RBIGNUM(x)->sign) get2comp(z, Qtrue);
|
if (!RBIGNUM(x)->sign) get2comp(z, Qtrue);
|
||||||
while (i--) ds[i] = ~ds[i];
|
while (i--) ds[i] = ~ds[i];
|
||||||
if (RBIGNUM(x)->sign) get2comp(z, Qfalse);
|
|
||||||
RBIGNUM(z)->sign = !RBIGNUM(z)->sign;
|
RBIGNUM(z)->sign = !RBIGNUM(z)->sign;
|
||||||
|
if (RBIGNUM(x)->sign) get2comp(z, Qtrue);
|
||||||
|
|
||||||
return bignorm(z);
|
return bignorm(z);
|
||||||
}
|
}
|
||||||
|
@ -1677,7 +1677,7 @@ rb_big_and(xx, yy)
|
||||||
for (; i<l2; i++) {
|
for (; i<l2; i++) {
|
||||||
zds[i] = sign?0:ds2[i];
|
zds[i] = sign?0:ds2[i];
|
||||||
}
|
}
|
||||||
if (!RBIGNUM(z)->sign) get2comp(z, Qfalse);
|
if (!RBIGNUM(z)->sign) get2comp(z, Qtrue);
|
||||||
return bignorm(z);
|
return bignorm(z);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1734,7 +1734,7 @@ rb_big_or(xx, yy)
|
||||||
for (; i<l2; i++) {
|
for (; i<l2; i++) {
|
||||||
zds[i] = sign?ds2[i]:(BIGRAD-1);
|
zds[i] = sign?ds2[i]:(BIGRAD-1);
|
||||||
}
|
}
|
||||||
if (!RBIGNUM(z)->sign) get2comp(z, Qfalse);
|
if (!RBIGNUM(z)->sign) get2comp(z, Qtrue);
|
||||||
|
|
||||||
return bignorm(z);
|
return bignorm(z);
|
||||||
}
|
}
|
||||||
|
@ -1795,7 +1795,7 @@ rb_big_xor(xx, yy)
|
||||||
for (; i<l2; i++) {
|
for (; i<l2; i++) {
|
||||||
zds[i] = sign?ds2[i]:~ds2[i];
|
zds[i] = sign?ds2[i]:~ds2[i];
|
||||||
}
|
}
|
||||||
if (!RBIGNUM(z)->sign) get2comp(z, Qfalse);
|
if (!RBIGNUM(z)->sign) get2comp(z, Qtrue);
|
||||||
|
|
||||||
return bignorm(z);
|
return bignorm(z);
|
||||||
}
|
}
|
||||||
|
|
1
error.c
1
error.c
|
@ -1108,7 +1108,6 @@ void
|
||||||
rb_sys_fail(mesg)
|
rb_sys_fail(mesg)
|
||||||
const char *mesg;
|
const char *mesg;
|
||||||
{
|
{
|
||||||
extern int errno;
|
|
||||||
int n = errno;
|
int n = errno;
|
||||||
VALUE arg;
|
VALUE arg;
|
||||||
|
|
||||||
|
|
|
@ -177,8 +177,13 @@ main()
|
||||||
}
|
}
|
||||||
for (ai = aitop; ai; ai = ai->ai_next) {
|
for (ai = aitop; ai; ai = ai->ai_next) {
|
||||||
if (ai->ai_family == AF_LOCAL) continue;
|
if (ai->ai_family == AF_LOCAL) continue;
|
||||||
if (ai->ai_addr == NULL ||
|
if (ai->ai_addr == NULL)
|
||||||
ai->ai_addrlen == 0 ||
|
goto bad;
|
||||||
|
#if defined(_AIX)
|
||||||
|
ai->ai_addr->sa_len = ai->ai_addrlen;
|
||||||
|
ai->ai_addr->sa_family = ai->ai_family;
|
||||||
|
#endif
|
||||||
|
if (ai->ai_addrlen == 0 ||
|
||||||
getnameinfo(ai->ai_addr, ai->ai_addrlen,
|
getnameinfo(ai->ai_addr, ai->ai_addrlen,
|
||||||
straddr, sizeof(straddr), strport, sizeof(strport),
|
straddr, sizeof(straddr), strport, sizeof(strport),
|
||||||
NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
|
NI_NUMERICHOST|NI_NUMERICSERV) != 0) {
|
||||||
|
|
|
@ -173,6 +173,30 @@ ruby_getaddrinfo(nodename, servname, hints, res)
|
||||||
#define getaddrinfo(node,serv,hints,res) ruby_getaddrinfo((node),(serv),(hints),(res))
|
#define getaddrinfo(node,serv,hints,res) ruby_getaddrinfo((node),(serv),(hints),(res))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(_AIX)
|
||||||
|
static int
|
||||||
|
ruby_getaddrinfo__aix(nodename, servname, hints, res)
|
||||||
|
char *nodename;
|
||||||
|
char *servname;
|
||||||
|
struct addrinfo *hints;
|
||||||
|
struct addrinfo **res;
|
||||||
|
{
|
||||||
|
int error = getaddrinfo(nodename, servname, hints, res);
|
||||||
|
struct addrinfo *r;
|
||||||
|
if (error)
|
||||||
|
return error;
|
||||||
|
for (r = *res; r != NULL; r = r->ai_next) {
|
||||||
|
if (r->ai_addr->sa_family == 0)
|
||||||
|
r->ai_addr->sa_family = r->ai_family;
|
||||||
|
if (r->ai_addr->sa_len == 0)
|
||||||
|
r->ai_addr->sa_len = r->ai_addrlen;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#undef getaddrinfo
|
||||||
|
#define getaddrinfo(node,serv,hints,res) ruby_getaddrinfo__aix((node),(serv),(hints),(res))
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_CLOSESOCKET
|
#ifdef HAVE_CLOSESOCKET
|
||||||
#undef close
|
#undef close
|
||||||
#define close closesocket
|
#define close closesocket
|
||||||
|
@ -2413,7 +2437,9 @@ sock_s_getnameinfo(argc, argv)
|
||||||
* 4th element holds numeric form, don't resolve.
|
* 4th element holds numeric form, don't resolve.
|
||||||
* see ipaddr().
|
* see ipaddr().
|
||||||
*/
|
*/
|
||||||
|
#ifdef AI_NUMERICHOST /* AIX 4.3.3 doesn't have AI_NUMERICHOST. */
|
||||||
hints.ai_flags |= AI_NUMERICHOST;
|
hints.ai_flags |= AI_NUMERICHOST;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -77,7 +77,7 @@ hash_proc = Proc.new { |type, val|
|
||||||
elsif Hash === val
|
elsif Hash === val
|
||||||
type, obj_class = YAML.read_type_class( type, Hash )
|
type, obj_class = YAML.read_type_class( type, Hash )
|
||||||
if obj_class != Hash
|
if obj_class != Hash
|
||||||
o = obj_class.new
|
o = obj_class.allocate
|
||||||
o.update( val )
|
o.update( val )
|
||||||
val = o
|
val = o
|
||||||
end
|
end
|
||||||
|
@ -236,7 +236,7 @@ array_proc = Proc.new { |type, val|
|
||||||
if Array === val
|
if Array === val
|
||||||
type, obj_class = YAML.read_type_class( type, Array )
|
type, obj_class = YAML.read_type_class( type, Array )
|
||||||
if obj_class != Array
|
if obj_class != Array
|
||||||
o = obj_class.new
|
o = obj_class.allocate
|
||||||
o.concat( val )
|
o.concat( val )
|
||||||
val = o
|
val = o
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue