mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
marshal.c: fix symlink index
* marshal.c (w_symbol): fix symlink index. register the given symbols, not its name. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46993 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
fbc3f55ba7
commit
360a865246
2 changed files with 6 additions and 1 deletions
|
@ -422,6 +422,7 @@ w_symbol(VALUE sym, struct dump_arg *arg)
|
|||
w_long((long)num, arg);
|
||||
}
|
||||
else {
|
||||
const VALUE orig_sym = sym;
|
||||
sym = rb_sym2str(sym);
|
||||
if (!sym) {
|
||||
rb_raise(rb_eTypeError, "can't dump anonymous ID %"PRIdVALUE, sym);
|
||||
|
@ -436,7 +437,7 @@ w_symbol(VALUE sym, struct dump_arg *arg)
|
|||
}
|
||||
w_byte(TYPE_SYMBOL, arg);
|
||||
w_bytes(RSTRING_PTR(sym), RSTRING_LEN(sym), arg);
|
||||
st_add_direct(arg->symbols, sym, arg->symbols->num_entries);
|
||||
st_add_direct(arg->symbols, orig_sym, arg->symbols->num_entries);
|
||||
if (!NIL_P(encname)) {
|
||||
struct dump_call_arg c_arg;
|
||||
c_arg.limit = 1;
|
||||
|
|
|
@ -248,6 +248,10 @@ class TestMarshal < Test::Unit::TestCase
|
|||
assert_equal(ary, Marshal.load(Marshal.dump(ary)), bug2548)
|
||||
end
|
||||
|
||||
def test_symlink
|
||||
assert_include(Marshal.dump([:a, :a]), ';')
|
||||
end
|
||||
|
||||
ClassUTF8 = eval("class R\u{e9}sum\u{e9}; self; end")
|
||||
|
||||
iso_8859_1 = Encoding::ISO_8859_1
|
||||
|
|
Loading…
Add table
Reference in a new issue