[#5218] Ruby Book Eng tl, ch1 question — Jon Babcock <jon@...>

13 messages 2000/10/02

[#5404] Object.foo, setters and so on — "Hal E. Fulton" <hal9000@...>

OK, here is what I think I know.

14 messages 2000/10/11

[#5425] Ruby Book Eng. tl, 9.8.11 -- seishitsu ? — Jon Babcock <jon@...>

18 messages 2000/10/11
[#5427] RE: Ruby Book Eng. tl, 9.8.11 -- seishitsu ? — OZAWA -Crouton- Sakuro <crouton@...> 2000/10/11

At Thu, 12 Oct 2000 03:49:46 +0900,

[#5429] Re: Ruby Book Eng. tl, 9.8.11 -- seishitsu ? — Jon Babcock <jon@...> 2000/10/11

Thanks for the input.

[#5432] Re: Ruby Book Eng. tl, 9.8.11 -- seishitsu ? — Yasushi Shoji <yashi@...> 2000/10/11

At Thu, 12 Oct 2000 04:53:41 +0900,

[#5516] Re: Some newbye question — ts <decoux@...>

>>>>> "D" == Davide Marchignoli <marchign@di.unipi.it> writes:

80 messages 2000/10/13
[#5531] Re: Some newbye question — matz@... (Yukihiro Matsumoto) 2000/10/14

Hi,

[#5544] Re: Some newbye question — Davide Marchignoli <marchign@...> 2000/10/15

On Sat, 14 Oct 2000, Yukihiro Matsumoto wrote:

[#5576] Re: local variables (nested, in-block, parameters, etc.) — Dave Thomas <Dave@...> 2000/10/16

matz@zetabits.com (Yukihiro Matsumoto) writes:

[#5617] Re: local variables (nested, in-block, parameters, etc.) — "Brian F. Feldman" <green@...> 2000/10/16

Dave Thomas <Dave@thomases.com> wrote:

[#5705] Dynamic languages, SWOT ? — Hugh Sasse Staff Elec Eng <hgs@...>

There has been discussion on this list/group from time to time about

16 messages 2000/10/20
[#5712] Re: Dynamic languages, SWOT ? — Charles Hixson <charleshixsn@...> 2000/10/20

Hugh Sasse Staff Elec Eng wrote:

[#5882] [RFC] Towards a new synchronisation primitive — hipster <hipster@...4all.nl>

Hello fellow rubyists,

21 messages 2000/10/26

[ruby-talk:5554] Problem with pack on 64-bit machines

From: Wes Nakamura <wknaka@...>
Date: 2000-10-15 20:24:58 UTC
List: ruby-talk #5554
I think I've found a problem with ruby 1.6.1 (non-cvs) Array#pack when 
on a 64-bit machine (in this case, an alpha running linux, so it's
64-bit little-endian).

e.g.:

>> [1].pack "N"
=> "\000\000\000\000"
>> [0x0102030405060708].pack "N"
=> "\001\002\003\004"
>> [0x0000000001020304].pack "N"
=> "\000\000\000\000"

After investigating quite a few things (tracking through the code to
rule things out ended up being a bigger effort than I thought for such a
short block of code!), the problem narrows down to approx line 600 in
pack.c:

rb_str_cat(res, OFF32(&l), NATINT_LEN(long,4));

I just checked on a 32-bit machine, and [0x0102030405060708].pack "N"
gives a RangeError, which I believe is because 0x0102030405060708
is a Bignum on a 32-bit machine, but a Fixnum on a 64-bit one, so
it follows a different path of execution (namely, within NUM2ULONG).

I'm not sure what the solution is.  Have it check the value of the long
during the pack "N" conversion on 64 bit machines and raise a range
error if it doesn't fit into 4 bytes?  Then where OFF32 normally has no
offset on a little endian machine, offset it (by 4 in this case) so
rb_str_cat uses the big-endian 4 least significant bytes?

The problem also affects unpacking, and maybe a couple of other things;
I wasn't able to exhaustively test, so it may not be only "N" that
doesn't work.

Thanks,
Wes.

##  Wes Nakamura  -  wknaka@pobox.com


In This Thread

Prev Next