/*
* call-seq:
* rd.evaporate! -> nil
*
* Releases mmap()-ed memory allocated for the Raindrops object back
* to the OS. The Ruby garbage collector will also release memory
* automatically when it is not needed, but this forces release
* under high memory pressure.
*/
static VALUE evaporate_bang(VALUE self)
{
struct raindrops *r = get(self);
void *addr = r->drops;
r->drops = MAP_FAILED;
if (munmap(addr, raindrop_size * r->capa) != 0)
rb_sys_fail("munmap");
return Qnil;
}