stringio 3.1.1 → 3.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/NEWS.md +32 -0
- data/ext/stringio/stringio.c +23 -13
- metadata +5 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 53f93bd2c66c51afc07b243b140794c10300067651cd29caae8abbda0f8c67dc
|
4
|
+
data.tar.gz: 05ec27cf31975fb899df94db40aa310bcea567cd3d3139348334ee62980fae81
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0775a86fb9144d9c8baf319717b06ed4932aa04a6eecddfdc62ca25bb2be574938c28a750766848e138918f553383345ab46b38856083dbafbb651d86169c918
|
7
|
+
data.tar.gz: b255d4b82939a69f1dbd12f152b8cfa9b9f6c1c4b78fd40a2bec3a22b6e40e7536430c940c5e19800815bbce7fd48c2f1bc5acf88368ed7b63aa0836a88f8ddb
|
data/NEWS.md
CHANGED
@@ -1,5 +1,37 @@
|
|
1
1
|
# News
|
2
2
|
|
3
|
+
## 3.1.3 - 2025-02-14
|
4
|
+
|
5
|
+
### Fixes
|
6
|
+
|
7
|
+
* JRuby: Fixed a bug that JRuby may not be able to be started
|
8
|
+
* GH-112
|
9
|
+
* GH-113
|
10
|
+
* Reported by Karol Bucek
|
11
|
+
|
12
|
+
### Thanks
|
13
|
+
|
14
|
+
* Karol Bucek
|
15
|
+
|
16
|
+
## 3.1.2 - 2024-11-07
|
17
|
+
|
18
|
+
### Improvements
|
19
|
+
|
20
|
+
* JRuby: Added support for detecting encoding by BOM.
|
21
|
+
* GH-100
|
22
|
+
* GH-101
|
23
|
+
|
24
|
+
### Fixes
|
25
|
+
|
26
|
+
* CRuby: Fixed a bug that unknown memory may be used by
|
27
|
+
`StringIO#ungetc`/`StringIO#ungetbyte`.
|
28
|
+
* https://hackerone.com/reports/2805165
|
29
|
+
* Reported by manun.
|
30
|
+
|
31
|
+
### Thanks
|
32
|
+
|
33
|
+
* manun
|
34
|
+
|
3
35
|
## 3.1.1 - 2024-06-13
|
4
36
|
|
5
37
|
### Improvements
|
data/ext/stringio/stringio.c
CHANGED
@@ -13,7 +13,7 @@
|
|
13
13
|
**********************************************************************/
|
14
14
|
|
15
15
|
static const char *const
|
16
|
-
STRINGIO_VERSION = "3.1.
|
16
|
+
STRINGIO_VERSION = "3.1.3";
|
17
17
|
|
18
18
|
#include <stdbool.h>
|
19
19
|
|
@@ -930,6 +930,18 @@ strio_extend(struct StringIO *ptr, long pos, long len)
|
|
930
930
|
}
|
931
931
|
}
|
932
932
|
|
933
|
+
static void
|
934
|
+
strio_unget_string(struct StringIO *ptr, VALUE c)
|
935
|
+
{
|
936
|
+
const char *cp = NULL;
|
937
|
+
long cl = RSTRING_LEN(c);
|
938
|
+
if (cl > 0) {
|
939
|
+
if (c != ptr->string) cp = RSTRING_PTR(c);
|
940
|
+
strio_unget_bytes(ptr, cp, cl);
|
941
|
+
RB_GC_GUARD(c);
|
942
|
+
}
|
943
|
+
}
|
944
|
+
|
933
945
|
/*
|
934
946
|
* call-seq:
|
935
947
|
* ungetc(character) -> nil
|
@@ -952,19 +964,22 @@ strio_ungetc(VALUE self, VALUE c)
|
|
952
964
|
|
953
965
|
enc = rb_enc_get(ptr->string);
|
954
966
|
len = rb_enc_codelen(cc, enc);
|
955
|
-
if (len <= 0)
|
967
|
+
if (len <= 0) {
|
968
|
+
rb_enc_uint_chr(cc, enc); /* to raise an exception */
|
969
|
+
UNREACHABLE;
|
970
|
+
}
|
956
971
|
rb_enc_mbcput(cc, buf, enc);
|
957
972
|
return strio_unget_bytes(ptr, buf, len);
|
958
973
|
}
|
959
974
|
else {
|
960
|
-
|
975
|
+
StringValue(c);
|
976
|
+
if (RSTRING_LEN(c) == 0) return Qnil;
|
961
977
|
enc = rb_enc_get(ptr->string);
|
962
978
|
enc2 = rb_enc_get(c);
|
963
979
|
if (enc != enc2 && enc != rb_ascii8bit_encoding()) {
|
964
980
|
c = rb_str_conv_enc(c, enc2, enc);
|
965
981
|
}
|
966
|
-
|
967
|
-
RB_GC_GUARD(c);
|
982
|
+
strio_unget_string(ptr, c);
|
968
983
|
return Qnil;
|
969
984
|
}
|
970
985
|
}
|
@@ -991,13 +1006,8 @@ strio_ungetbyte(VALUE self, VALUE c)
|
|
991
1006
|
strio_unget_bytes(ptr, &cc, 1);
|
992
1007
|
}
|
993
1008
|
else {
|
994
|
-
|
995
|
-
|
996
|
-
cl = RSTRING_LEN(c);
|
997
|
-
if (cl > 0) {
|
998
|
-
strio_unget_bytes(ptr, RSTRING_PTR(c), cl);
|
999
|
-
RB_GC_GUARD(c);
|
1000
|
-
}
|
1009
|
+
StringValue(c);
|
1010
|
+
strio_unget_string(ptr, c);
|
1001
1011
|
}
|
1002
1012
|
return Qnil;
|
1003
1013
|
}
|
@@ -1028,7 +1038,7 @@ strio_unget_bytes(struct StringIO *ptr, const char *cp, long cl)
|
|
1028
1038
|
if (rest > cl) memset(s + len, 0, rest - cl);
|
1029
1039
|
pos -= cl;
|
1030
1040
|
}
|
1031
|
-
memcpy(s + pos, cp, cl);
|
1041
|
+
memcpy(s + pos, (cp ? cp : s), cl);
|
1032
1042
|
ptr->pos = pos;
|
1033
1043
|
return Qnil;
|
1034
1044
|
}
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stringio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1.
|
4
|
+
version: 3.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nobu Nakada
|
8
8
|
- Charles Oliver Nutter
|
9
|
-
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2025-02-14 00:00:00.000000000 Z
|
13
12
|
dependencies: []
|
14
13
|
description: Pseudo `IO` class from/to `String`.
|
15
14
|
email:
|
@@ -42,8 +41,8 @@ homepage: https://github.com/ruby/stringio
|
|
42
41
|
licenses:
|
43
42
|
- Ruby
|
44
43
|
- BSD-2-Clause
|
45
|
-
metadata:
|
46
|
-
|
44
|
+
metadata:
|
45
|
+
changelog_uri: https://github.com/ruby/stringio/releases/tag/v3.1.3
|
47
46
|
rdoc_options: []
|
48
47
|
require_paths:
|
49
48
|
- lib
|
@@ -58,8 +57,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
58
57
|
- !ruby/object:Gem::Version
|
59
58
|
version: '0'
|
60
59
|
requirements: []
|
61
|
-
rubygems_version: 3.
|
62
|
-
signing_key:
|
60
|
+
rubygems_version: 3.6.2
|
63
61
|
specification_version: 4
|
64
62
|
summary: Pseudo IO on String
|
65
63
|
test_files: []
|