[#11383] Re: $2000 USD Reward for help fixing Segmentation Fault in GC — Brent Roman <brent@...>
Daz,
[#11396] Re: $2000 USD Reward for help fixing Segmentation Fault in GC — Brent Roman <brent@...>
Sylvain,
[#11401] Proc.== — David Flanagan <david@...>
Can anyone construct two proc objects p1 and p2, without using clone or
Hi,
Okay, anything other than the degenerate case of a proc with no body?
On Jun 4, 2007, at 22:57, David Flanagan wrote:
[#11409] Method introspection ? — "Jonas Pfenniger" <zimbatm@...>
Hello,
[#11418] currying in Ruby — David Flanagan <david@...>
I've written a little argument currying module for Procs and Methods. I
[#11431] Are there a better set of unit tests for Array? — "John Lam (CLR)" <jflam@...>
It seems like the unit tests that we have in Ruby.net were:
[#11439] comments needed for Random class — "NAKAMURA, Hiroshi" <nakahiro@...>
-----BEGIN PGP SIGNED MESSAGE-----
On 6/12/07, NAKAMURA, Hiroshi <nakahiro@sarion.co.jp> wrote:
[#11450] Re: new method dispatch rule (matz' proposal) — David Flanagan <david@...>
This is a late response to the very long thread that started back in
On 6/13/07, David Flanagan <david@davidflanagan.com> wrote:
On 6/13/07, David Flanagan <david@davidflanagan.com> wrote:
[#11457] Inclusion of bug #9376 in 1.8.6 branch — Sylvain Joyeux <sylvain.joyeux@...4x.org>
Would it be possible to include the fix for bug #9376 in 1.8.6 ? It is not
[#11462] What should this code do? — "John Lam (CLR)" <jflam@...>
Thinking about control flow these days ...
[#11472] Strange Array#transpose behavior for custom to_ary method — Daniel Berger <djberg96@...>
Ruby 1.8.6 p36
[#11481] Ancestors for Singleton classes — "Robert Dober" <robert.dober@...>
I am taking this away from ruby-talk as it contains patches.
[#11482] Ruby Changes Its Mind About Non-Word Characters — James Edward Gray II <james@...>
Does this look like a bug to anyone else?
James Edward Gray II wrote:
Hi,
On Jun 16, 2007, at 2:41 PM, Vincent Isambart wrote:
> > It is because the and サ characters are not in ISO-8859-1.
[#11505] Question about the patchlevel release cycle — Sylvain Joyeux <sylvain.joyeux@...4x.org>
1.8.6 thread support was broken in bad ways. It stayed for three months
> could you refer to bug #s?
Hi,
Hi, I'm the 1.8.6 branch manager.
On 6/20/07, Urabe Shyouhei <shyouhei@ruby-lang.org> wrote:
[#11533] method_missing for Enumerator — TRANS <transfire@...>
What do others think of this for 1.9+?
[#11543] Re: Apple reportedly to ship with ruby 1.8.6-p36 unless informed what to patch — James Edward Gray II <james@...>
On Jun 27, 2007, at 4:47 PM, Bill Kelly wrote:
Hi,
On Jun 30, 2007, at 4:51 AM, Urabe Shyouhei wrote:
Hi,
Hi,
Hi,
I haven't seen it mentioned explicitly in this thread so far, but I
[#11545] Proc initialize method not called under certain circumstances — "John Lam (CLR)" <jflam@...>
class Proc
On Fri, 29 Jun 2007 05:43:14 +0900, "John Lam (CLR)" <jflam@microsoft.com> wrote:
So, is it correct to assume that for language constructs that create built-in types like Range, Array, Hash etc that user-defined initialize methods are never called?
Re: [BUG] delete_if with destructive methods in block
Hi,
At Fri, 29 Jun 2007 11:10:25 +0900,
Florian Gross wrote in [ruby-core:11556]:
> It outputs the following:
>
> [5, 6]
> {1=>2, 3=>4}
>
> [5]
> {3=>4}
The second is outputed from the block called by Hash#delete
used internally. It seems wrong indeed.
And rb_hash_shift() should consider iter_lev too.
Index: hash.c
===================================================================
--- hash.c (revision 12654)
+++ hash.c (working copy)
@@ -591,4 +591,21 @@ index_i(key, value, args)
}
+static VALUE
+rb_hash_delete_key(hash, key)
+ VALUE hash, key;
+{
+ st_data_t ktmp = (st_data_t)key, val;
+
+ if (RHASH(hash)->iter_lev > 0) {
+ if (st_delete_safe(RHASH(hash)->tbl, &ktmp, &val, Qundef)) {
+ FL_SET(hash, HASH_DELETED);
+ return (VALUE)val;
+ }
+ }
+ else if (st_delete(RHASH(hash)->tbl, &ktmp, &val))
+ return (VALUE)val;
+ return Qundef;
+}
+
/*
* call-seq:
@@ -670,12 +687,6 @@ rb_hash_delete(hash, key)
rb_hash_modify(hash);
- if (RHASH(hash)->iter_lev > 0) {
- if (st_delete_safe(RHASH(hash)->tbl, (st_data_t*)&key, &val, Qundef)) {
- FL_SET(hash, HASH_DELETED);
- return val;
- }
- }
- else if (st_delete(RHASH(hash)->tbl, (st_data_t*)&key, &val))
- return val;
+ val = rb_hash_delete_key(hash, key);
+ if (val != Qundef) return val;
if (rb_block_given_p()) {
return rb_yield(key);
@@ -685,5 +696,4 @@ rb_hash_delete(hash, key)
struct shift_var {
- int stop;
VALUE key;
VALUE val;
@@ -696,6 +706,5 @@ shift_i(key, value, var)
{
if (key == Qundef) return ST_CONTINUE;
- if (var->stop) return ST_STOP;
- var->stop = 1;
+ if (var->key != Qundef) return ST_STOP;
var->key = key;
var->val = value;
@@ -703,4 +712,15 @@ shift_i(key, value, var)
}
+static int
+shift_i_safe(key, value, var)
+ VALUE key, value;
+ struct shift_var *var;
+{
+ if (key == Qundef) return ST_CONTINUE;
+ var->key = key;
+ var->val = value;
+ return ST_STOP;
+}
+
/*
* call-seq:
@@ -723,8 +743,19 @@ rb_hash_shift(hash)
rb_hash_modify(hash);
- var.stop = 0;
- rb_hash_foreach(hash, shift_i, (st_data_t)&var);
+ var.key = Qundef;
+ if (RHASH(hash)->iter_lev > 0) {
+ rb_hash_foreach(hash, shift_i_safe, (st_data_t)&var);
+ if (var.key != Qundef) {
+ st_data_t key = var.key;
+ if (st_delete_safe(RHASH(hash)->tbl, &key, 0, Qundef)) {
+ FL_SET(hash, HASH_DELETED);
+ }
+ }
+ }
+ else {
+ rb_hash_foreach(hash, shift_i, (st_data_t)&var);
+ }
- if (var.stop) {
+ if (var.key != Qundef) {
return rb_assoc_new(var.key, var.val);
}
@@ -743,5 +774,5 @@ delete_if_i(key, value, hash)
if (key == Qundef) return ST_CONTINUE;
if (RTEST(rb_yield_values(2, key, value))) {
- rb_hash_delete(hash, key);
+ rb_hash_delete_key(hash, key);
}
return ST_CONTINUE;
--
Nobu Nakada