[#1338] 1.8.0: possible socket problem with mswin32 builds — Jos Backus <jos@...>
Fyi: I tried the following command with two Ruby distributions on Windows 2003
5 messages
2003/08/05
[#1342] SEGV in GC under Linux — Dave Thomas <dave@...>
A while back I was getting double free()s reported on my MAC box when
5 messages
2003/08/05
[#1364] Broken REXML in Ruby 1.8 — Alexander Bokovoy <a.bokovoy@...>
Greetings!
1 message
2003/08/06
[#1378] differences between Module and Class ? — Mathieu Bouchard <matju@...>
25 messages
2003/08/11
[#1387] Re: differences between Module and Class ?
— matz@... (Yukihiro Matsumoto)
2003/08/12
Hi,
[#1442] Re: differences between Module and Class ?
— Mathieu Bouchard <matju@...>
2003/08/21
[#1452] Re: differences between Module and Class ?
— matz@... (Yukihiro Matsumoto)
2003/08/22
Hi,
[#1469] Re: differences between Module and Class ?
— Mathieu Bouchard <matju@...>
2003/08/23
[#1470] Re: differences between Module and Class ?
— matz@... (Yukihiro Matsumoto)
2003/08/24
Hi,
[#1472] Re: differences between Module and Class ?
— Mathieu Bouchard <matju@...>
2003/08/24
[#1444] Re: differences between Module and Class ?
— ts <decoux@...>
2003/08/21
>>>>> "M" == Mathieu Bouchard <matju@sympatico.ca> writes:
[#1381] proc/block with return — Mathieu Bouchard <matju@...>
9 messages
2003/08/11
[#1394] Std lib and updating PickAxe (was Re: proc/block with return) — "Gavin Sinclair" <gsinclair@...>
> [Dave wrote:]
5 messages
2003/08/13
[#1400] subclassing Structs — Eugene Scripnik <Eugene.Scripnik@...>
I'm trying to create class which behaves as struct (almost) and has some
5 messages
2003/08/13
[#1406] _id2ref bug? — Ryan Pavlik <rpav@...>
While debugging some caching code, I've come across a segfault related
22 messages
2003/08/14
[#1407] Re: _id2ref bug?
— matz@... (Yukihiro Matsumoto)
2003/08/14
Hi,
[#1413] Re: _id2ref bug? (REPRODUCED, short)
— Ryan Pavlik <rpav@...>
2003/08/14
On Fri, 15 Aug 2003 01:57:18 +0900
[#1415] Re: _id2ref bug? (REPRODUCED, short)
— matz@... (Yukihiro Matsumoto)
2003/08/15
Hi,
[#1416] Re: _id2ref bug? (another break)
— Ryan Pavlik <rpav@...>
2003/08/15
On Fri, 15 Aug 2003 09:21:39 +0900
[#1417] Re: _id2ref bug? (another break)
— nobu.nokada@...
2003/08/15
Hi,
[#1418] Re: _id2ref bug? (another break)
— Ryan Pavlik <rpav@...>
2003/08/15
On Fri, 15 Aug 2003 12:35:32 +0900
[#1424] Re: _id2ref bug? (another break)
— ts <decoux@...>
2003/08/15
>>>>> "n" == nobu nokada <nobu.nokada@softhome.net> writes:
[#1447] ruby-mode.el — Ryan Pavlik <rpav@...>
Attached is a patch for ruby-mode.el that adds font hilighting for
7 messages
2003/08/21
[#1450] Re: [PATCH] ruby-mode.el
— Ryan Pavlik <rpav@...>
2003/08/21
Crud, my mail has been slow, and I just got this back, but I realize I
[#1454] NODE_DSTR and NODE_EVSTR? — Robert Feldt <feldt@...>
How are "dynamic" strings represented internally?
7 messages
2003/08/22
Re: _id2ref bug? (REPRODUCED, short)
From:
Ryan Pavlik <rpav@...>
Date:
2003-08-14 18:09:19 UTC
List:
ruby-core #1413
On Fri, 15 Aug 2003 01:57:18 +0900 matz@ruby-lang.org (Yukihiro Matsumoto) wrote: <snip> > We can't say much without error reproducing code. <snip> I was wrong, here's a short example that reproduces the problem exactly. -- Ryan Pavlik <rpav@users.sf.net> "I distinctly remember dancing on your grave." - 8BT
Attachments (1)
weakref.rb
(1.34 KB, text/x-ruby)
class Object
@@oid = 0
def _oid
unless defined?(@_oid)
@_oid = @@oid + 1
@@oid += 1
end
@_oid
end
end
class Cache
def initialize(max = 5, reduce = 3)
@s_cache = {}
@w_cache = {}
@cachehits = {}
@max = 5
@reduce = 3
end #m:initialize
def cache(o)
oid = o._oid
return if(@s_cache.has_key? oid)
if(@s_cache.size + 1 > @max)
cache_free(@reduce)
end
@cachehits[oid] = 1
@s_cache[oid] = o
@w_cache[oid] = o.__id__
return oid
end #m:cache
def [](oid)
if(o = @s_cache[oid])
@cachehits[oid] += 1
return o
elsif(id = @w_cache[oid])
begin
o = ObjectSpace._id2ref(id)
cache(o)
return o
rescue RangeError
return nil
end
end
return nil
end #m:[]
def cache_free(size)
print "Freeing #{size}...\n"
list = @cachehits.sort { |a, b| (a[1] <=> b[1]) }
size.times {
| i |
break if(i >= list.size)
oid = list[i][0]
store @s_cache[oid]
@s_cache.delete oid
@cachehits.delete oid
# oid remains in the weak cache
}
end #m:cache_free
def store(object)
# Does nothing in this example
end #m:store
end #c:Cache
c = Cache.new
(1...100).each {
c.cache(Object.new)
(1..100).each { |i| p c[i]; }
}