MRI-Binding: Enforce UTF-8 strings in 'Marshal::load()' via aux proc
We override 'Marshal::load()' via alias and call it with a custom auxiliary proc in the alias which sets the encoding of all demarshalled strings to UTF-8. The case where a user himself provided a proc to 'load()' is not implemented. This is definitely a better solution than patching the ruby source tree. Thanks to github.com/cremno for hints and help!
This commit is contained in:
parent
e14f3ef9db
commit
27341dc95d
2 changed files with 38 additions and 15 deletions
|
@ -1,15 +0,0 @@
|
|||
diff --git a/marshal.c b/marshal.c
|
||||
index 4cba05d..dfce6ee 100644
|
||||
--- a/marshal.c
|
||||
+++ b/marshal.c
|
||||
@@ -1312,7 +1312,9 @@ r_unique(struct load_arg *arg)
|
||||
static VALUE
|
||||
r_string(struct load_arg *arg)
|
||||
{
|
||||
- return r_bytes(arg);
|
||||
+ VALUE str = r_bytes(arg);
|
||||
+ rb_enc_associate(str, rb_utf8_encoding());
|
||||
+ return str;
|
||||
}
|
||||
|
||||
static VALUE
|
Loading…
Add table
Add a link
Reference in a new issue