mirror of
https://github.com/ruby/ruby.git
synced 2025-08-23 13:04:13 +02:00
Merge from ruby_1_8.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@16511 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
1d78315845
commit
b524523217
9 changed files with 77 additions and 49 deletions
20
ChangeLog
20
ChangeLog
|
@ -1,3 +1,23 @@
|
||||||
|
Wed May 21 23:31:44 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* eval.c (rb_get_method_body, rb_alias, rb_eval): should not cache
|
||||||
|
uninitialized value, since search_method doesn't set origin if the
|
||||||
|
method wasn't found.
|
||||||
|
|
||||||
|
* eval.c (search_method, remove_method, error_print, rb_alias)
|
||||||
|
(rb_eval, rb_rescue2, search_required, Init_eval, rb_thread_create),
|
||||||
|
gc.c (rb_source_filename, Init_stack), io.c (rb_io_getline),
|
||||||
|
parse.y (rb_id2name, rb_parser_free): suppress warnings.
|
||||||
|
|
||||||
|
Wed May 21 12:34:51 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* hash.c (rb_hash_delete): rdoc fix based on a patch from Gaston Ramos
|
||||||
|
<ramos.gaston AT gmail.com>. [ruby-core:16825]
|
||||||
|
|
||||||
|
Tue May 20 13:15:46 2008 Akinori MUSHA <knu@iDaemons.org>
|
||||||
|
|
||||||
|
* file.c (lchmod_internal): Remove a compiler warning.
|
||||||
|
|
||||||
Mon May 19 18:22:35 2008 Akinori MUSHA <knu@iDaemons.org>
|
Mon May 19 18:22:35 2008 Akinori MUSHA <knu@iDaemons.org>
|
||||||
|
|
||||||
* ext/openssl/ossl_pkcs5.c (ossl_pkcs5_pbkdf2_hmac): Fix the type
|
* ext/openssl/ossl_pkcs5.c (ossl_pkcs5_pbkdf2_hmac): Fix the type
|
||||||
|
|
48
eval.c
48
eval.c
|
@ -467,16 +467,16 @@ search_method(klass, id, origin)
|
||||||
VALUE klass, *origin;
|
VALUE klass, *origin;
|
||||||
ID id;
|
ID id;
|
||||||
{
|
{
|
||||||
NODE *body;
|
st_data_t body;
|
||||||
|
|
||||||
if (!klass) return 0;
|
if (!klass) return 0;
|
||||||
while (!st_lookup(RCLASS(klass)->m_tbl, id, (st_data_t *)&body)) {
|
while (!st_lookup(RCLASS(klass)->m_tbl, id, &body)) {
|
||||||
klass = RCLASS(klass)->super;
|
klass = RCLASS(klass)->super;
|
||||||
if (!klass) return 0;
|
if (!klass) return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (origin) *origin = klass;
|
if (origin) *origin = klass;
|
||||||
return body;
|
return (NODE *)body;
|
||||||
}
|
}
|
||||||
|
|
||||||
static NODE*
|
static NODE*
|
||||||
|
@ -487,7 +487,7 @@ rb_get_method_body(klassp, idp, noexp)
|
||||||
{
|
{
|
||||||
ID id = *idp;
|
ID id = *idp;
|
||||||
VALUE klass = *klassp;
|
VALUE klass = *klassp;
|
||||||
VALUE origin;
|
VALUE origin = 0;
|
||||||
NODE * volatile body;
|
NODE * volatile body;
|
||||||
struct cache_entry *ent;
|
struct cache_entry *ent;
|
||||||
|
|
||||||
|
@ -555,7 +555,8 @@ remove_method(klass, mid)
|
||||||
VALUE klass;
|
VALUE klass;
|
||||||
ID mid;
|
ID mid;
|
||||||
{
|
{
|
||||||
NODE *body;
|
st_data_t data;
|
||||||
|
NODE *body = 0;
|
||||||
|
|
||||||
if (klass == rb_cObject) {
|
if (klass == rb_cObject) {
|
||||||
rb_secure(4);
|
rb_secure(4);
|
||||||
|
@ -567,10 +568,11 @@ remove_method(klass, mid)
|
||||||
if (mid == __id__ || mid == __send__ || mid == init) {
|
if (mid == __id__ || mid == __send__ || mid == init) {
|
||||||
rb_warn("removing `%s' may cause serious problem", rb_id2name(mid));
|
rb_warn("removing `%s' may cause serious problem", rb_id2name(mid));
|
||||||
}
|
}
|
||||||
if (st_lookup(RCLASS(klass)->m_tbl, mid, (st_data_t *)&body)) {
|
if (st_lookup(RCLASS(klass)->m_tbl, mid, &data)) {
|
||||||
|
body = (NODE *)data;
|
||||||
if (!body || !body->nd_body) body = 0;
|
if (!body || !body->nd_body) body = 0;
|
||||||
else {
|
else {
|
||||||
st_delete(RCLASS(klass)->m_tbl, &mid, (st_data_t *)&body);
|
st_delete(RCLASS(klass)->m_tbl, &mid, &data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!body) {
|
if (!body) {
|
||||||
|
@ -1286,7 +1288,7 @@ error_print()
|
||||||
long len = elen;
|
long len = elen;
|
||||||
|
|
||||||
if (RSTRING(epath)->ptr[0] == '#') epath = 0;
|
if (RSTRING(epath)->ptr[0] == '#') epath = 0;
|
||||||
if (tail = memchr(einfo, '\n', elen)) {
|
if ((tail = memchr(einfo, '\n', elen)) != 0) {
|
||||||
len = tail - einfo;
|
len = tail - einfo;
|
||||||
tail++; /* skip newline */
|
tail++; /* skip newline */
|
||||||
}
|
}
|
||||||
|
@ -2159,9 +2161,10 @@ rb_alias(klass, name, def)
|
||||||
VALUE klass;
|
VALUE klass;
|
||||||
ID name, def;
|
ID name, def;
|
||||||
{
|
{
|
||||||
VALUE origin;
|
VALUE origin = 0;
|
||||||
NODE *orig, *body, *node;
|
NODE *orig, *body, *node;
|
||||||
VALUE singleton = 0;
|
VALUE singleton = 0;
|
||||||
|
st_data_t data;
|
||||||
|
|
||||||
rb_frozen_class_p(klass);
|
rb_frozen_class_p(klass);
|
||||||
if (name == def) return;
|
if (name == def) return;
|
||||||
|
@ -2189,7 +2192,8 @@ rb_alias(klass, name, def)
|
||||||
}
|
}
|
||||||
|
|
||||||
rb_clear_cache_by_id(name);
|
rb_clear_cache_by_id(name);
|
||||||
if (RTEST(ruby_verbose) && st_lookup(RCLASS(klass)->m_tbl, name, (st_data_t *)&node)) {
|
if (RTEST(ruby_verbose) && st_lookup(RCLASS(klass)->m_tbl, name, &data)) {
|
||||||
|
node = (NODE *)data;
|
||||||
if (node->nd_cnt == 0 && node->nd_body) {
|
if (node->nd_cnt == 0 && node->nd_body) {
|
||||||
rb_warning("discarding old %s", rb_id2name(name));
|
rb_warning("discarding old %s", rb_id2name(name));
|
||||||
}
|
}
|
||||||
|
@ -2940,6 +2944,7 @@ rb_eval(self, n)
|
||||||
NODE * volatile node = n;
|
NODE * volatile node = n;
|
||||||
int state;
|
int state;
|
||||||
volatile VALUE result = Qnil;
|
volatile VALUE result = Qnil;
|
||||||
|
st_data_t data;
|
||||||
|
|
||||||
#define RETURN(v) do { \
|
#define RETURN(v) do { \
|
||||||
result = (v); \
|
result = (v); \
|
||||||
|
@ -3916,7 +3921,7 @@ rb_eval(self, n)
|
||||||
case NODE_DEFN:
|
case NODE_DEFN:
|
||||||
if (node->nd_defn) {
|
if (node->nd_defn) {
|
||||||
NODE *body, *defn;
|
NODE *body, *defn;
|
||||||
VALUE origin;
|
VALUE origin = 0;
|
||||||
int noex;
|
int noex;
|
||||||
|
|
||||||
if (NIL_P(ruby_class)) {
|
if (NIL_P(ruby_class)) {
|
||||||
|
@ -3978,7 +3983,8 @@ rb_eval(self, n)
|
||||||
|
|
||||||
if (OBJ_FROZEN(recv)) rb_error_frozen("object");
|
if (OBJ_FROZEN(recv)) rb_error_frozen("object");
|
||||||
klass = rb_singleton_class(recv);
|
klass = rb_singleton_class(recv);
|
||||||
if (st_lookup(RCLASS(klass)->m_tbl, node->nd_mid, (st_data_t *)&body)) {
|
if (st_lookup(RCLASS(klass)->m_tbl, node->nd_mid, &data)) {
|
||||||
|
body = (NODE *)data;
|
||||||
if (ruby_safe_level >= 4) {
|
if (ruby_safe_level >= 4) {
|
||||||
rb_raise(rb_eSecurityError, "redefining method prohibited");
|
rb_raise(rb_eSecurityError, "redefining method prohibited");
|
||||||
}
|
}
|
||||||
|
@ -5441,7 +5447,7 @@ rb_rescue2(b_proc, data1, r_proc, data2, va_alist)
|
||||||
if (handle) break;
|
if (handle) break;
|
||||||
handle = Qfalse;
|
handle = Qfalse;
|
||||||
va_init_list(args, data2);
|
va_init_list(args, data2);
|
||||||
while (eclass = va_arg(args, VALUE)) {
|
while ((eclass = va_arg(args, VALUE)) != 0) {
|
||||||
if (rb_obj_is_kind_of(ruby_errinfo, eclass)) {
|
if (rb_obj_is_kind_of(ruby_errinfo, eclass)) {
|
||||||
handle = Qtrue;
|
handle = Qtrue;
|
||||||
break;
|
break;
|
||||||
|
@ -7206,7 +7212,7 @@ search_required(fname, featurep, path)
|
||||||
#else
|
#else
|
||||||
rb_str_cat2(tmp, DLEXT);
|
rb_str_cat2(tmp, DLEXT);
|
||||||
OBJ_FREEZE(tmp);
|
OBJ_FREEZE(tmp);
|
||||||
if (*path = rb_find_file(tmp)) {
|
if ((*path = rb_find_file(tmp)) != 0) {
|
||||||
return 's';
|
return 's';
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -8058,11 +8064,11 @@ Init_eval()
|
||||||
__id__ = rb_intern("__id__");
|
__id__ = rb_intern("__id__");
|
||||||
__send__ = rb_intern("__send__");
|
__send__ = rb_intern("__send__");
|
||||||
|
|
||||||
rb_global_variable((VALUE*)&top_scope);
|
rb_global_variable((void *)&top_scope);
|
||||||
rb_global_variable((VALUE*)&ruby_eval_tree_begin);
|
rb_global_variable((void *)&ruby_eval_tree_begin);
|
||||||
|
|
||||||
rb_global_variable((VALUE*)&ruby_eval_tree);
|
rb_global_variable((void *)&ruby_eval_tree);
|
||||||
rb_global_variable((VALUE*)&ruby_dyna_vars);
|
rb_global_variable((void *)&ruby_dyna_vars);
|
||||||
|
|
||||||
rb_define_virtual_variable("$@", errat_getter, errat_setter);
|
rb_define_virtual_variable("$@", errat_getter, errat_setter);
|
||||||
rb_define_hooked_variable("$!", &ruby_errinfo, 0, errinfo_setter);
|
rb_define_hooked_variable("$!", &ruby_errinfo, 0, errinfo_setter);
|
||||||
|
@ -8075,7 +8081,7 @@ Init_eval()
|
||||||
|
|
||||||
rb_define_method(rb_mKernel, "respond_to?", obj_respond_to, -1);
|
rb_define_method(rb_mKernel, "respond_to?", obj_respond_to, -1);
|
||||||
respond_to = rb_intern("respond_to?");
|
respond_to = rb_intern("respond_to?");
|
||||||
rb_global_variable((VALUE*)&basic_respond_to);
|
rb_global_variable((void *)&basic_respond_to);
|
||||||
basic_respond_to = rb_method_node(rb_cObject, respond_to);
|
basic_respond_to = rb_method_node(rb_cObject, respond_to);
|
||||||
|
|
||||||
rb_define_global_function("raise", rb_f_raise, -1);
|
rb_define_global_function("raise", rb_f_raise, -1);
|
||||||
|
@ -11958,7 +11964,7 @@ rb_thread_alloc(klass)
|
||||||
return th;
|
return th;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int thread_init = 0;
|
static int thread_init;
|
||||||
|
|
||||||
#if defined(_THREAD_SAFE)
|
#if defined(_THREAD_SAFE)
|
||||||
static void
|
static void
|
||||||
|
@ -12171,7 +12177,7 @@ rb_thread_create(fn, arg)
|
||||||
VALUE (*fn)();
|
VALUE (*fn)();
|
||||||
void *arg;
|
void *arg;
|
||||||
{
|
{
|
||||||
Init_stack((VALUE*)&arg);
|
Init_stack((void *)&arg);
|
||||||
return rb_thread_start_0(fn, arg, rb_thread_alloc(rb_cThread));
|
return rb_thread_start_0(fn, arg, rb_thread_alloc(rb_cThread));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2
file.c
2
file.c
|
@ -1785,7 +1785,7 @@ lchmod_internal(path, mode)
|
||||||
const char *path;
|
const char *path;
|
||||||
void *mode;
|
void *mode;
|
||||||
{
|
{
|
||||||
if (lchmod(path, (int)mode) < 0)
|
if (lchmod(path, (int)(VALUE)mode) < 0)
|
||||||
rb_sys_fail(path);
|
rb_sys_fail(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
17
gc.c
17
gc.c
|
@ -565,17 +565,18 @@ char *
|
||||||
rb_source_filename(f)
|
rb_source_filename(f)
|
||||||
const char *f;
|
const char *f;
|
||||||
{
|
{
|
||||||
char *name;
|
st_data_t name;
|
||||||
|
|
||||||
if (!st_lookup(source_filenames, (st_data_t)f, (st_data_t *)&name)) {
|
if (!st_lookup(source_filenames, (st_data_t)f, &name)) {
|
||||||
long len = strlen(f) + 1;
|
long len = strlen(f) + 1;
|
||||||
char *ptr = name = ALLOC_N(char, len + 1);
|
char *ptr = ALLOC_N(char, len + 1);
|
||||||
|
name = (st_data_t)ptr;
|
||||||
*ptr++ = 0;
|
*ptr++ = 0;
|
||||||
MEMCPY(ptr, f, char, len);
|
MEMCPY(ptr, f, char, len);
|
||||||
st_add_direct(source_filenames, (st_data_t)ptr, (st_data_t)name);
|
st_add_direct(source_filenames, (st_data_t)ptr, name);
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
return name + 1;
|
return (char *)name + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1295,7 +1296,7 @@ obj_free(obj)
|
||||||
if (RANY(obj)->as.scope.local_vars &&
|
if (RANY(obj)->as.scope.local_vars &&
|
||||||
RANY(obj)->as.scope.flags != SCOPE_ALLOCA) {
|
RANY(obj)->as.scope.flags != SCOPE_ALLOCA) {
|
||||||
VALUE *vars = RANY(obj)->as.scope.local_vars-1;
|
VALUE *vars = RANY(obj)->as.scope.local_vars-1;
|
||||||
if (!(RANY(obj)->as.scope.flags & SCOPE_CLONE) && vars[0] == 0)
|
if (!(RANY(obj)->as.scope.flags & SCOPE_CLONE) && vars[0] == 0)
|
||||||
RUBY_CRITICAL(free(RANY(obj)->as.scope.local_tbl));
|
RUBY_CRITICAL(free(RANY(obj)->as.scope.local_tbl));
|
||||||
if (RANY(obj)->as.scope.flags & SCOPE_MALLOC)
|
if (RANY(obj)->as.scope.flags & SCOPE_MALLOC)
|
||||||
RUBY_CRITICAL(free(vars));
|
RUBY_CRITICAL(free(vars));
|
||||||
|
@ -1527,7 +1528,7 @@ Init_stack(addr)
|
||||||
rb_gc_stack_start = STACK_END_ADDRESS;
|
rb_gc_stack_start = STACK_END_ADDRESS;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (!addr) addr = (VALUE *)&addr;
|
if (!addr) addr = (void *)&addr;
|
||||||
STACK_UPPER(&addr, addr, ++addr);
|
STACK_UPPER(&addr, addr, ++addr);
|
||||||
if (rb_gc_stack_start) {
|
if (rb_gc_stack_start) {
|
||||||
if (STACK_UPPER(&addr,
|
if (STACK_UPPER(&addr,
|
||||||
|
@ -1650,7 +1651,7 @@ os_obj_of(of)
|
||||||
p = heaps[i].slot; pend = p + heaps[i].limit;
|
p = heaps[i].slot; pend = p + heaps[i].limit;
|
||||||
for (;p < pend; p++) {
|
for (;p < pend; p++) {
|
||||||
if (p->as.basic.flags) {
|
if (p->as.basic.flags) {
|
||||||
switch (TYPE(p)) {
|
switch (BUILTIN_TYPE(p)) {
|
||||||
case T_NONE:
|
case T_NONE:
|
||||||
case T_ICLASS:
|
case T_ICLASS:
|
||||||
case T_VARMAP:
|
case T_VARMAP:
|
||||||
|
|
7
hash.c
7
hash.c
|
@ -702,10 +702,9 @@ rb_hash_indexes(argc, argv, hash)
|
||||||
* hsh.delete(key) {| key | block } => value
|
* hsh.delete(key) {| key | block } => value
|
||||||
*
|
*
|
||||||
* Deletes and returns a key-value pair from <i>hsh</i> whose key is
|
* Deletes and returns a key-value pair from <i>hsh</i> whose key is
|
||||||
* equal to <i>key</i>. If the key is not found, returns the
|
* equal to <i>key</i>. If the key is not found, returns <code>nil</code>.
|
||||||
* <em>default value</em>. If the optional code block is given and the
|
* If the optional code block is given and the key is not found,
|
||||||
* key is not found, pass in the key and return the result of
|
* pass in the key and return the result of <i>block</i>.
|
||||||
* <i>block</i>.
|
|
||||||
*
|
*
|
||||||
* h = { "a" => 100, "b" => 200 }
|
* h = { "a" => 100, "b" => 200 }
|
||||||
* h.delete("a") #=> 100
|
* h.delete("a") #=> 100
|
||||||
|
|
2
io.c
2
io.c
|
@ -1723,7 +1723,7 @@ rb_io_getline(rs, io)
|
||||||
|
|
||||||
while ((c = appendline(fptr, newline, &str)) != EOF &&
|
while ((c = appendline(fptr, newline, &str)) != EOF &&
|
||||||
(c != newline || RSTRING(str)->len < rslen ||
|
(c != newline || RSTRING(str)->len < rslen ||
|
||||||
(rspara || rscheck(rsptr,rslen,rs), 0) ||
|
((rspara || rscheck(rsptr,rslen,rs)) && 0) ||
|
||||||
memcmp(RSTRING(str)->ptr+RSTRING(str)->len-rslen,rsptr,rslen)));
|
memcmp(RSTRING(str)->ptr+RSTRING(str)->len-rslen,rsptr,rslen)));
|
||||||
|
|
||||||
if (rspara) {
|
if (rspara) {
|
||||||
|
|
7
parse.y
7
parse.y
|
@ -6128,6 +6128,7 @@ rb_id2name(id)
|
||||||
ID id;
|
ID id;
|
||||||
{
|
{
|
||||||
char *name;
|
char *name;
|
||||||
|
st_data_t data;
|
||||||
|
|
||||||
if (id < tLAST_TOKEN) {
|
if (id < tLAST_TOKEN) {
|
||||||
int i;
|
int i;
|
||||||
|
@ -6138,8 +6139,8 @@ rb_id2name(id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (st_lookup(sym_rev_tbl, id, (st_data_t *)&name))
|
if (st_lookup(sym_rev_tbl, id, &data))
|
||||||
return name;
|
return (char *)data;
|
||||||
|
|
||||||
if (is_attrset_id(id)) {
|
if (is_attrset_id(id)) {
|
||||||
ID id2 = (id & ~ID_SCOPE_MASK) | ID_LOCAL;
|
ID id2 = (id & ~ID_SCOPE_MASK) | ID_LOCAL;
|
||||||
|
@ -6352,7 +6353,7 @@ rb_parser_free(ptr)
|
||||||
{
|
{
|
||||||
NODE **prev = &parser_heap, *n;
|
NODE **prev = &parser_heap, *n;
|
||||||
|
|
||||||
while (n = *prev) {
|
while ((n = *prev) != 0) {
|
||||||
if (n->u1.node == ptr) {
|
if (n->u1.node == ptr) {
|
||||||
*prev = n->u2.node;
|
*prev = n->u2.node;
|
||||||
rb_gc_force_recycle((VALUE)n);
|
rb_gc_force_recycle((VALUE)n);
|
||||||
|
|
17
signal.c
17
signal.c
|
@ -271,9 +271,9 @@ esignal_init(argc, argv, self)
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
interrupt_init(argc, argv, self)
|
interrupt_init(argc, argv, self)
|
||||||
int argc;
|
int argc;
|
||||||
VALUE *argv;
|
VALUE *argv;
|
||||||
VALUE self;
|
VALUE self;
|
||||||
{
|
{
|
||||||
VALUE args[2];
|
VALUE args[2];
|
||||||
|
|
||||||
|
@ -572,16 +572,17 @@ sighandler(sig)
|
||||||
|
|
||||||
#if defined(HAVE_NATIVETHREAD) && defined(HAVE_NATIVETHREAD_KILL)
|
#if defined(HAVE_NATIVETHREAD) && defined(HAVE_NATIVETHREAD_KILL)
|
||||||
if (!is_ruby_native_thread() && !rb_trap_accept_nativethreads[sig]) {
|
if (!is_ruby_native_thread() && !rb_trap_accept_nativethreads[sig]) {
|
||||||
sigsend_to_ruby_thread(sig);
|
sigsend_to_ruby_thread(sig);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(BSD_SIGNAL) && !defined(POSIX_SIGNAL)
|
#if !defined(BSD_SIGNAL) && !defined(POSIX_SIGNAL)
|
||||||
if (rb_trap_accept_nativethreads[sig]) {
|
if (rb_trap_accept_nativethreads[sig]) {
|
||||||
ruby_nativethread_signal(sig, sighandler);
|
ruby_nativethread_signal(sig, sighandler);
|
||||||
} else {
|
}
|
||||||
ruby_signal(sig, sighandler);
|
else {
|
||||||
|
ruby_signal(sig, sighandler);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#define RUBY_VERSION "1.8.7"
|
#define RUBY_VERSION "1.8.7"
|
||||||
#define RUBY_RELEASE_DATE "2008-05-19"
|
#define RUBY_RELEASE_DATE "2008-05-22"
|
||||||
#define RUBY_VERSION_CODE 187
|
#define RUBY_VERSION_CODE 187
|
||||||
#define RUBY_RELEASE_CODE 20080519
|
#define RUBY_RELEASE_CODE 20080522
|
||||||
#define RUBY_PATCHLEVEL 0
|
#define RUBY_PATCHLEVEL 0
|
||||||
|
|
||||||
#define RUBY_VERSION_MAJOR 1
|
#define RUBY_VERSION_MAJOR 1
|
||||||
|
@ -9,7 +9,7 @@
|
||||||
#define RUBY_VERSION_TEENY 7
|
#define RUBY_VERSION_TEENY 7
|
||||||
#define RUBY_RELEASE_YEAR 2008
|
#define RUBY_RELEASE_YEAR 2008
|
||||||
#define RUBY_RELEASE_MONTH 5
|
#define RUBY_RELEASE_MONTH 5
|
||||||
#define RUBY_RELEASE_DAY 19
|
#define RUBY_RELEASE_DAY 22
|
||||||
|
|
||||||
#ifdef RUBY_EXTERN
|
#ifdef RUBY_EXTERN
|
||||||
RUBY_EXTERN const char ruby_version[];
|
RUBY_EXTERN const char ruby_version[];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue