Here's some code:

-------------------------------------
class MyThing {
int x;
}
// Two identical arrays, typewise
MyThing arga[0];
MyThing argb[0];

// Create an instance
MyThing thing;
5 => thing.x;

// Push it into arga
arga << thing;
// Push it into argb
argb << thing;

<<< "n=", arga[0].x >>>;
<<< "n=", argb[0].x >>>;

// clear arga
0 => arga.size;
// clear argb - crash!
0 => argb.size;
-------------------------------------

when I run it I get:

-------------------------------------
$ chuck test.
ck
n= 5 
n= 5 
chuck_oo.cpp:120: failed assertion `m_ref_count > 0'
Abort trap
-------------------------------------

It seems that that 0 => arga.size decrements a reference count for thing, causing it to be freed, and then when the same thing is attempted for argb, it crashes. Possibly some reference increment missing when doing argb << thing ?

/Stefan

--
Release me, insect, or I will destroy the Cosmos!