summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--config.guess2
-rw-r--r--dir.c4
-rw-r--r--dln.c2
-rw-r--r--eval.c14
-rw-r--r--object.c3
-rw-r--r--string.c2
-rw-r--r--version.h4
8 files changed, 27 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index 96da5adbfb..4c7ca51c29 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -17,6 +17,11 @@ Sun Jul 8 16:05:36 2001 Minero Aoki <[email protected]>
* lib/net/protocol.rb (ProtoSocket#read): modify typo.
+Fri Jul 6 18:01:10 2001 Yukihiro Matsumoto <[email protected]>
+
+ * object.c (rb_obj_dup): should free generic_ivar if original owns
+ them.
+
Fri Jul 6 15:11:38 2001 Akinori MUSHA <[email protected]>
* lib/tempfile.rb: merge from 1.7: do not delete a used tempfile
@@ -46,6 +51,10 @@ Thu Jul 5 22:53:27 2001 Nobuyoshi Nakada <[email protected]>
* file.c (rb_find_file_noext): move rb_file_s_expand_path to
rb_f_require().
+Thu Jul 5 22:01:02 2001 Mitsuhiro Kondo <[email protected]>
+
+ * dln.c (dln_load): should use NSLINKMODULE_OPTION_BINDNOW.
+
Thu Jul 5 20:28:53 2001 Tietew <[email protected]>
* string.c (rb_str_each_line): should propagate taint mark.
diff --git a/config.guess b/config.guess
index c55635bd7b..4b71675d16 100644
--- a/config.guess
+++ b/config.guess
@@ -970,7 +970,7 @@ EOF
echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
exit 0 ;;
*:Darwin:*:*)
- echo `uname -p`-apple-darwin${UNAME_RELEASE}
+ echo `uname -p`-apple-darwin${UNAME_RELEASE} | sed -e 's/\([1-9][0-9]*\.[0-9][0-9]*\)\..*$/\1/'
exit 0 ;;
esac
diff --git a/dir.c b/dir.c
index 187ae1896e..42d9e8eb03 100644
--- a/dir.c
+++ b/dir.c
@@ -572,7 +572,7 @@ void
rb_glob_helper(path, flags, func, arg)
char *path;
int flags;
- void (*func)();
+ void (*func) _((const char*, VALUE));
VALUE arg;
{
struct stat st;
@@ -702,7 +702,7 @@ rb_glob(path, func, arg)
void
rb_iglob(path, func, arg)
char *path;
- void (*func)();
+ void (*func) _((const char*, VALUE));
VALUE arg;
{
rb_glob_helper(path, FNM_PERIOD|FNM_NOCASE, func, arg);
diff --git a/dln.c b/dln.c
index 394db47321..04d6c6f949 100644
--- a/dln.c
+++ b/dln.c
@@ -1383,7 +1383,7 @@ dln_load(file)
rb_loaderror("Failed to load %.200s", file);
}
- NSLinkModule(obj_file, file, TRUE);
+ NSLinkModule(obj_file, file, NSLINKMODULE_OPTION_BINDNOW);
/* lookup the initial function */
/*NSIsSymbolNameDefined require function name without "_" */
diff --git a/eval.c b/eval.c
index 8e3ffd1035..622b624e99 100644
--- a/eval.c
+++ b/eval.c
@@ -574,6 +574,7 @@ new_blktag()
_block.vmode = scope_vmode; \
_block.flags = BLOCK_D_SCOPE; \
_block.dyna_vars = ruby_dyna_vars; \
+ _block.wrapper = ruby_wrapper; \
ruby_block = &_block;
#define POP_BLOCK_TAG(tag) do { \
@@ -3511,8 +3512,9 @@ rb_yield_0(val, self, klass, acheck)
NODE *node;
volatile VALUE result = Qnil;
volatile VALUE old_cref;
- struct BLOCK *block;
- struct SCOPE *old_scope;
+ volatile VALUE old_wrapper;
+ struct BLOCK * volatile block;
+ struct SCOPE * volatile old_scope;
struct FRAME frame;
int state;
static unsigned serial = 1;
@@ -3529,6 +3531,8 @@ rb_yield_0(val, self, klass, acheck)
ruby_frame = &(frame);
old_cref = (VALUE)ruby_cref;
ruby_cref = (NODE*)ruby_frame->cbase;
+ old_wrapper = ruby_wrapper;
+ ruby_wrapper = block->wrapper;
old_scope = ruby_scope;
ruby_scope = block->scope;
ruby_block = block->prev;
@@ -3654,6 +3658,7 @@ rb_yield_0(val, self, klass, acheck)
ruby_block = block;
ruby_frame = ruby_frame->prev;
ruby_cref = (NODE*)old_cref;
+ ruby_wrapper = old_wrapper;
if (ruby_scope->flag & SCOPE_DONT_RECYCLE)
scope_dup(old_scope);
ruby_scope = old_scope;
@@ -6334,7 +6339,6 @@ proc_call(proc, args)
orphan = blk_orphan(data);
ruby_wrapper = data->wrapper;
-
/* PUSH BLOCK from data */
old_block = ruby_block;
_block = *data;
@@ -6455,7 +6459,6 @@ block_pass(self, node)
int state;
volatile int orphan;
volatile int safe = ruby_safe_level;
- volatile VALUE old_wrapper = ruby_wrapper;
if (NIL_P(block)) {
return rb_eval(self, node->nd_iter);
@@ -6471,8 +6474,6 @@ block_pass(self, node)
Data_Get_Struct(block, struct BLOCK, data);
orphan = blk_orphan(data);
- ruby_wrapper = data->wrapper;
-
/* PUSH BLOCK from data */
old_block = ruby_block;
_block = *data;
@@ -6510,7 +6511,6 @@ block_pass(self, node)
}
}
ruby_block = old_block;
- ruby_wrapper = old_wrapper;
ruby_safe_level = safe;
switch (state) {/* escape from orphan procedure */
diff --git a/object.c b/object.c
index 1656bd319c..8a247eac9d 100644
--- a/object.c
+++ b/object.c
@@ -115,6 +115,9 @@ rb_obj_dup(obj)
if (!SPECIAL_CONST_P(dup)) {
OBJSETUP(dup, rb_obj_type(obj), BUILTIN_TYPE(obj));
OBJ_INFECT(dup, obj);
+ if (FL_TEST(obj, FL_EXIVAR)) {
+ FL_SET(dup, FL_EXIVAR);
+ }
}
return dup;
}
diff --git a/string.c b/string.c
index cff38d8917..a1f00a12a1 100644
--- a/string.c
+++ b/string.c
@@ -216,6 +216,8 @@ rb_str_dup(str)
str2 = rb_str_new3(rb_str_new4(str));
}
OBJ_INFECT(str2, str);
+ if (FL_TEST(str, FL_EXIVAR))
+ rb_clone_generic_ivar(str2, str);
RBASIC(str2)->klass = klass;
return str2;
}
diff --git a/version.h b/version.h
index 6980b6d651..c098237e40 100644
--- a/version.h
+++ b/version.h
@@ -1,4 +1,4 @@
#define RUBY_VERSION "1.6.4"
-#define RUBY_RELEASE_DATE "2001-07-12"
+#define RUBY_RELEASE_DATE "2001-07-13"
#define RUBY_VERSION_CODE 164
-#define RUBY_RELEASE_CODE 20010712
+#define RUBY_RELEASE_CODE 20010713