google-protobuf 4.28.0.rc.1-arm64-darwin → 4.28.0.rc.2-arm64-darwin

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of google-protobuf might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 428b6110d23efd5f0221381a83edbc9040c28b301ad4e78447a96b4aaee07b99
4
- data.tar.gz: 4b7ed698163f9e96f9b41ab01ec02a0b2c0e878111896d5d157fe134032cfee7
3
+ metadata.gz: 6a43155e5a42dcc8b26c0c21b5df3c06dcd6112cfbd29807dd37e6ba155043d6
4
+ data.tar.gz: e89143a856d7dd4e0847dc4ab88a653d81f93f2073ddbd527ab4c40cfb24a9a6
5
5
  SHA512:
6
- metadata.gz: b457f65a745a824a24cee33553a4e9fd07eada3a9a0b74828fec28f25796515b573796d6b93885be83a4003d5d9a25e1ec4c047ce468363218d0fbd9c3f5ec98
7
- data.tar.gz: 1382c128d7a25635d959542f0bb900a1901eaa75086683f20dcb770fb3f828c38d16c56def1f62c75d30513f3d7ca30a31b84abf9a52073a1dfea201bb2a4499
6
+ metadata.gz: 5818e8489f11701254e8dadbe1e46b55ba55e7a8b19e2c60777fba90a21247b2f714d37d71cf426865819dc5dbebe7e248fb8d9de9cfb8195b5752c6792a4943
7
+ data.tar.gz: a9a0680957c1686891c8989e63be1bf33b404ab2cd041a7dd54d5417532b2f2fcc69ebad05ddac5407f0946e6497eeb8b2a6ef978feea6ec8ab5be0673b9b621
@@ -104,6 +104,41 @@ unknownval:
104
104
  rb_raise(rb_eRangeError, "Unknown symbol value for enum field '%s'.", name);
105
105
  }
106
106
 
107
+ VALUE Convert_CheckStringUtf8(VALUE str) {
108
+ VALUE utf8 = rb_enc_from_encoding(rb_utf8_encoding());
109
+
110
+ if (rb_obj_encoding(str) == utf8) {
111
+ // Note: Just because a string is marked as having UTF-8 encoding does
112
+ // not mean that it is *valid* UTF-8. We have to check separately
113
+ // whether it is valid.
114
+ if (rb_enc_str_coderange(str) == ENC_CODERANGE_BROKEN) {
115
+ // TODO: For now
116
+ // we only warn for this case. We will remove the warning and throw an
117
+ // exception below in the 30.x release
118
+
119
+ rb_warn(
120
+ "String is invalid UTF-8. This will be an error in a future "
121
+ "version.");
122
+ // VALUE exc = rb_const_get_at(
123
+ // rb_cEncoding, rb_intern("InvalidByteSequenceError"));
124
+ // rb_raise(exc, "String is invalid UTF-8");
125
+ }
126
+ } else {
127
+ // Note: this will not duplicate underlying string data unless
128
+ // necessary.
129
+ //
130
+ // This will throw an exception if the conversion cannot be performed:
131
+ // - Encoding::UndefinedConversionError if certain characters cannot be
132
+ // converted to UTF-8.
133
+ // - Encoding::InvalidByteSequenceError if certain characters were invalid
134
+ // in the source encoding.
135
+ str = rb_str_encode(str, utf8, 0, Qnil);
136
+ PBRUBY_ASSERT(rb_enc_str_coderange(str) != ENC_CODERANGE_BROKEN);
137
+ }
138
+
139
+ return str;
140
+ }
141
+
107
142
  upb_MessageValue Convert_RubyToUpb(VALUE value, const char* name,
108
143
  TypeInfo type_info, upb_Arena* arena) {
109
144
  upb_MessageValue ret;
@@ -137,8 +172,7 @@ upb_MessageValue Convert_RubyToUpb(VALUE value, const char* name,
137
172
  }
138
173
  break;
139
174
  }
140
- case kUpb_CType_String: {
141
- VALUE utf8 = rb_enc_from_encoding(rb_utf8_encoding());
175
+ case kUpb_CType_String:
142
176
  if (rb_obj_class(value) == rb_cSymbol) {
143
177
  value = rb_funcall(value, rb_intern("to_s"), 0);
144
178
  } else if (!rb_obj_is_kind_of(value, rb_cString)) {
@@ -147,19 +181,9 @@ upb_MessageValue Convert_RubyToUpb(VALUE value, const char* name,
147
181
  rb_class2name(CLASS_OF(value)));
148
182
  }
149
183
 
150
- if (rb_obj_encoding(value) != utf8) {
151
- // Note: this will not duplicate underlying string data unless
152
- // necessary.
153
- value = rb_str_encode(value, utf8, 0, Qnil);
154
-
155
- if (rb_enc_str_coderange(value) == ENC_CODERANGE_BROKEN) {
156
- rb_raise(rb_eEncodingError, "String is invalid UTF-8");
157
- }
158
- }
159
-
184
+ value = Convert_CheckStringUtf8(value);
160
185
  ret.str_val = Convert_StringData(value, arena);
161
186
  break;
162
- }
163
187
  case kUpb_CType_Bytes: {
164
188
  VALUE bytes = rb_enc_from_encoding(rb_ascii8bit_encoding());
165
189
  if (rb_obj_class(value) != rb_cString) {
Binary file
Binary file
Binary file
Binary file
@@ -33,11 +33,18 @@ module Google
33
33
  return_value[:bool_val] = value
34
34
  when :string
35
35
  raise TypeError.new "Invalid argument for string field '#{name}' (given #{value.class})." unless value.is_a?(String) or value.is_a?(Symbol)
36
- begin
36
+ value = value.to_s if value.is_a?(Symbol)
37
+ if value.encoding == Encoding::UTF_8
38
+ unless value.valid_encoding?
39
+ # TODO:
40
+ # For now we only warn for this case. We will remove the
41
+ # warning and throw an exception below in the 30.x release
42
+ warn "String is invalid UTF-8. This will be an error in a future version."
43
+ # raise Encoding::InvalidByteSequenceError.new "String is invalid UTF-8"
44
+ end
45
+ string_value = value
46
+ else
37
47
  string_value = value.to_s.encode("UTF-8")
38
- rescue Encoding::UndefinedConversionError
39
- # TODO - why not include the field name here?
40
- raise Encoding::UndefinedConversionError.new "String is invalid UTF-8"
41
48
  end
42
49
  return_value[:str_val][:size] = string_value.bytesize
43
50
  return_value[:str_val][:data] = Google::Protobuf::FFI.arena_malloc(arena, string_value.bytesize)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-protobuf
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.28.0.rc.1
4
+ version: 4.28.0.rc.2
5
5
  platform: arm64-darwin
6
6
  authors:
7
7
  - Protobuf Authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-07-11 00:00:00.000000000 Z
11
+ date: 2024-08-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler-dock
@@ -190,7 +190,7 @@ homepage: https://developers.google.com/protocol-buffers
190
190
  licenses:
191
191
  - BSD-3-Clause
192
192
  metadata:
193
- source_code_uri: https://github.com/protocolbuffers/protobuf/tree/v4.28.0-rc1/ruby
193
+ source_code_uri: https://github.com/protocolbuffers/protobuf/tree/v4.28.0-rc2/ruby
194
194
  post_install_message:
195
195
  rdoc_options: []
196
196
  require_paths: