On 2007-07-30, Jeremy Henty <onepoint / starurchin.org> (ie. me) wrote:

> Upgrading 1.8.6 to 1.8.6-p36 has stopped C++ extensions from
> compiling.

OK, the problem is that g++ requires you to declare enum's before
using them and 1.8.6-p36 added some declarations to intern.h that use
an enum defined in node.h .  Everything works OK (as far as I can
tell) if I patch intern.h to #include node.h .  (Patch supplied at the
end.)

Is there any way to work around this without patching Ruby?  I can't
find one so far.

Regards, 

Jeremy Henty 


diff -ur -- 0/intern.h 1/intern.h
--- 0/intern.h	2007-06-07 13:40:01.000000000 +0100
+++ 1/intern.h	2007-07-30 17:36:54.972409368 +0100
@@ -19,6 +19,8 @@
 
 #define ID_ALLOCATOR 1
 
+#include "node.h"
+
 /* array.c */
 void rb_mem_clear _((register VALUE*, register long));
 VALUE rb_assoc_new _((VALUE, VALUE));