Saluton!
I am presently using ‘Programming Ruby’ but I have problems with the
over-minimalistic description of the C function’s behavior.
I did google (both on WWW and Usenet) but that didn’t reveal anything
useful. I for example need some more detailed information on how
REALLOC_N works to avoid core dumps which I presently face :-<
#define REALLOC_N(var,type,n) (var)=(type*)xrealloc((char*)(var),sizeof(type)*(n))
#define xrealloc ruby_xrealloc
void *
ruby_xrealloc(ptr, size)
void *ptr;
long size;
{
void *mem;
if (size < 0) {
rb_raise(rb_eArgError, "negative re-allocation size");
}
if (!ptr) return xmalloc(size);
if (size == 0) size = 1;
malloc_increase += size;
RUBY_CRITICAL(mem = realloc(ptr, size));
if (!mem) {
rb_gc();
RUBY_CRITICAL(mem = realloc(ptr, size));
if (!mem) {
rb_memerror();
}
}
return mem;
}
REALLOC_N is passed a pointer, the corresponding type and the number
of objects to (re)allocate place for. (Re)allocation is tried first and
in case of failure a GC run is launched. If it fails twice an exception
(NoMemError) is raised.
In case of success, newly allocated memory (past the block that was
given the REALLOC_N) is uninitialized.
The descriptions in ‘Programming Ruby’ are insufficient for old C
hands …
Fortunately the code is always up-to-date, and “it even documents
the bugs” 
···
On Mon, Jun 16, 2003 at 09:32:32AM +0900, Josef ‘Jupp’ Schugt wrote:
–
_ _
__ __ | | ___ _ __ ___ __ _ _ __
'_ \ / | __/ __| '_ _ \ / ` | ’ \
) | (| | |__ \ | | | | | (| | | | |
.__/ _,|_|/| || ||_,|| |_|
Running Debian GNU/Linux Sid (unstable)
batsman dot geo at yahoo dot com
panic(“Foooooooood fight!”);
– In the kernel source aha1542.c, after detecting a bad segment list