diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-06-02 10:02:20 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-06-02 10:02:20 +0000 |
commit | 61ac67c14b03d52826b08ce89bb03a188dbfd6c3 (patch) | |
tree | ad63ff20dd63df63b25dcb3c55c89cff66b7e822 /version.h | |
parent | 6e96241d318cf4a177c4ed59ea334cb687f4efd6 (diff) |
merge revision(s) 31731:31734:
* variable.c (rb_autoload_load): There is a race condition while
autoloading. When two or more threads touch a single autoloaded
constant at a time, one of them does the require, but others
behave oddly. To fix this situation we now refrain from
deleting the autoload table while someone is doing the autoload.
That deletion is deferred to a point where a require ended
successfully. Doing so make it possible for multiple threads to
enter autoloading at the same time but the require is protected
against multiple simultaneous entrance anyway so all but one
thread gets blocked at that point. So with it, touching a
constant that gets autoloaded cause those threads to block until
there is another one that does the same thing.
[ruby-core:36308] (#921)
* variable.c (rb_const_get_0): ditto.
* variable.c (autoload_node): ditto.
* variable.c (autoload_delete): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@31732 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Signed-off-by: URABE, Shyouhei <shyouhei@ruby-lang.org>
* variable.c (rb_const_get_0): Fix previous change. There were
possibilities when an autoload-specified library lacks
definition of the constant it was bound to. Once after such
library had already beed loaded, the autoload engine shall not
reload it. Instead the interpreter have to consider such
constant nonexistent. It results in a const_missing situation.
* variable.c (rb_autoload_load): ditto.
* variable.c (autoload_node): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@31734 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Signed-off-by: URABE, Shyouhei <shyouhei@ruby-lang.org>
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@31904 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'version.h')
-rw-r--r-- | version.h | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -2,7 +2,7 @@ #define RUBY_RELEASE_DATE "2011-06-02" #define RUBY_VERSION_CODE 187 #define RUBY_RELEASE_CODE 20110602 -#define RUBY_PATCHLEVEL 347 +#define RUBY_PATCHLEVEL 348 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 8 |