mirror of
https://github.com/ruby/ruby.git
synced 2026-01-26 20:19:19 +00:00
merge revision(s) 7ae67e8f6ad6e7fd0677b28a7a10961f79d55495: [Backport #21568]
[PATCH] load.c: Fix dest and src of MEMMOVE When multiple files with the same name are required, the features_index hash stores the indexes in `$LOADED_FEATURES` array into a darray. The dest and src arguments for `MEMMOVE` were wrongly reversed when inserting a new index in the darray. [Bug #21568]
This commit is contained in:
parent
ce7aa23f97
commit
27a1df7506
2
load.c
2
load.c
@ -283,7 +283,7 @@ features_index_add_single_callback(st_data_t *key, st_data_t *value, st_data_t r
|
||||
if (pos >= 0) {
|
||||
long *ptr = rb_darray_data_ptr(feature_indexes);
|
||||
long len = rb_darray_size(feature_indexes);
|
||||
MEMMOVE(ptr + pos, ptr + pos + 1, long, len - pos - 1);
|
||||
MEMMOVE(ptr + pos + 1, ptr + pos, long, len - pos - 1);
|
||||
ptr[pos] = FIX2LONG(offset);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1035,4 +1035,18 @@ class TestRequire < Test::Unit::TestCase
|
||||
end
|
||||
RUBY
|
||||
end
|
||||
|
||||
def test_bug_21568
|
||||
load_path = $LOAD_PATH.dup
|
||||
loaded_featrures = $LOADED_FEATURES.dup
|
||||
|
||||
$LOAD_PATH.clear
|
||||
$LOADED_FEATURES.replace(["foo.so", "a/foo.rb", "b/foo.rb"])
|
||||
|
||||
assert_nothing_raised(LoadError) { require "foo" }
|
||||
|
||||
ensure
|
||||
$LOAD_PATH.replace(load_path) if load_path
|
||||
$LOADED_FEATURES.replace loaded_featrures
|
||||
end
|
||||
end
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
|
||||
#define RUBY_VERSION_TEENY 9
|
||||
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
|
||||
#define RUBY_PATCHLEVEL 178
|
||||
#define RUBY_PATCHLEVEL 179
|
||||
|
||||
#include "ruby/version.h"
|
||||
#include "ruby/internal/abi.h"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user