Ruby 1.9.3's mkmf.rb generates an incorrect conftest.c with this change and results in a "main is undeclared" error.
As is, 1.9.3 will generate something like:
#include "ruby.h"
/top/
int t() { void ((volatile p)()); p = (void (()()))main; return 0; }
int main(int argc, char **argv)
{
if (argc > 1000000) {
printf("%p", &t);
}
return 0;
}
The t() function should be defined under main's definition and t() should be declared at the top. Ruby 2.0.0's mkmf.rb generates something like (which is correct):
#include "ruby.h"
/top/
extern int t(void);
int main(int argc, char **argv)
{
if (argc > 1000000) {
printf("%p", &t);
}
return 0;
}
int t() { void ((volatile p)()); p = (void (()()))main; return 0; }