google-protobuf 3.16.0.rc.1-x86-linux → 3.17.0-x86-linux

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: 57dfaa408109ee7a9c22b44623711fb8c636f61734770091f0cfa5d81e157d6b
4
- data.tar.gz: a948993f9f83cb9fd75b9090f795dbd0a3119e9a1c770fe4121f7a6ba13b4f8a
3
+ metadata.gz: 99d85ecc9d08e04b6c06966728396c2de08adf57933c343b4e51ff5ae27619b8
4
+ data.tar.gz: b4538c4df38e56a3cba6e556ab25adeddf0509d01f21f19837b35708cafa226a
5
5
  SHA512:
6
- metadata.gz: d2394db83f6f2d7243eab2dd788cd77fe156d849966e6c4551c61f90ce4a97acf8c727b0efdff6ad7e3f6b19f8d7fed575ff918b9921c706c553c42fe73c074a
7
- data.tar.gz: 9ac3ad884829f1bc2ca83aad0da07f45f1c34d7646c1580b3f0c72ad60f7ab6fd7e93010cb15ab4a64fe70a8080568203faedb7c3b4715cb71c81d85649e739b
6
+ metadata.gz: 148effb1aed41258921c6e72a4c7aed042db7a9c17885c53b83dfca807094e194e3d27e97eb85032506b635a343584c137a0bd4933f4080ca5c4620bc6de8be8
7
+ data.tar.gz: 78188180daa7adbd866c7da00b4746aa4aea33db95340be6c7c8dbb6b482bf59c71480562b74b3876078a2826844242960591aa1bf1f33a8d2bee23e205296df
@@ -868,6 +868,20 @@ static VALUE FieldDescriptor_default(VALUE _self) {
868
868
  return Convert_UpbToRuby(default_val, TypeInfo_get(self->fielddef), Qnil);
869
869
  }
870
870
 
871
+
872
+ /*
873
+ * call-seq:
874
+ * FieldDescriptor.json_name => json_name
875
+ *
876
+ * Returns this field's json_name, as a Ruby string, or nil if not yet set.
877
+ */
878
+ static VALUE FieldDescriptor_json_name(VALUE _self) {
879
+ FieldDescriptor* self = ruby_to_FieldDescriptor(_self);
880
+ const upb_fielddef *f = self->fielddef;
881
+ const char *json_name = upb_fielddef_jsonname(f);
882
+ return rb_str_new2(json_name);
883
+ }
884
+
871
885
  /*
872
886
  * call-seq:
873
887
  * FieldDescriptor.label => label
@@ -1043,6 +1057,7 @@ static void FieldDescriptor_register(VALUE module) {
1043
1057
  rb_define_method(klass, "name", FieldDescriptor_name, 0);
1044
1058
  rb_define_method(klass, "type", FieldDescriptor__type, 0);
1045
1059
  rb_define_method(klass, "default", FieldDescriptor_default, 0);
1060
+ rb_define_method(klass, "json_name", FieldDescriptor_json_name, 0);
1046
1061
  rb_define_method(klass, "label", FieldDescriptor_label, 0);
1047
1062
  rb_define_method(klass, "number", FieldDescriptor_number, 0);
1048
1063
  rb_define_method(klass, "submsg_name", FieldDescriptor_submsg_name, 0);
@@ -1750,6 +1765,16 @@ static void msgdef_add_field(VALUE msgbuilder_rb, upb_label_t label, VALUE name,
1750
1765
  field_proto,
1751
1766
  FileBuilderContext_strdup(self->file_builder, default_value));
1752
1767
  }
1768
+
1769
+ if (rb_funcall(options, rb_intern("key?"), 1,
1770
+ ID2SYM(rb_intern("json_name"))) == Qtrue) {
1771
+ VALUE json_name =
1772
+ rb_hash_lookup(options, ID2SYM(rb_intern("json_name")));
1773
+
1774
+ google_protobuf_FieldDescriptorProto_set_json_name(
1775
+ field_proto,
1776
+ FileBuilderContext_strdup(self->file_builder, json_name));
1777
+ }
1753
1778
  }
1754
1779
 
1755
1780
  if (oneof_index >= 0) {
@@ -1899,18 +1924,20 @@ static VALUE MessageBuilderContext_required(int argc, VALUE* argv,
1899
1924
  */
1900
1925
  static VALUE MessageBuilderContext_repeated(int argc, VALUE* argv,
1901
1926
  VALUE _self) {
1902
- VALUE name, type, number, type_class;
1927
+ VALUE name, type, number;
1928
+ VALUE type_class, options = Qnil;
1903
1929
 
1904
- if (argc < 3) {
1905
- rb_raise(rb_eArgError, "Expected at least 3 arguments.");
1930
+ rb_scan_args(argc, argv, "32", &name, &type, &number, &type_class, &options);
1931
+
1932
+ // Allow passing (name, type, number, options) or
1933
+ // (name, type, number, type_class, options)
1934
+ if (argc == 4 && RB_TYPE_P(type_class, T_HASH)) {
1935
+ options = type_class;
1936
+ type_class = Qnil;
1906
1937
  }
1907
- name = argv[0];
1908
- type = argv[1];
1909
- number = argv[2];
1910
- type_class = (argc > 3) ? argv[3] : Qnil;
1911
1938
 
1912
1939
  msgdef_add_field(_self, UPB_LABEL_REPEATED, name, type, number, type_class,
1913
- Qnil, -1, false);
1940
+ options, -1, false);
1914
1941
 
1915
1942
  return Qnil;
1916
1943
  }
@@ -17,4 +17,5 @@ end
17
17
  $objs = ["protobuf.o", "convert.o", "defs.o", "message.o",
18
18
  "repeated_field.o", "map.o", "ruby-upb.o", "wrap_memcpy.o"]
19
19
 
20
+ find_header('third_party/wyhash/wyhash.h', '../../../..')
20
21
  create_makefile("google/protobuf_c")
@@ -734,7 +734,10 @@ uint64_t Message_Hash(const upb_msg* msg, const upb_msgdef* m, uint64_t seed) {
734
734
  */
735
735
  static VALUE Message_hash(VALUE _self) {
736
736
  Message* self = ruby_to_Message(_self);
737
- return INT2FIX(Message_Hash(self->msg, self->msgdef, 0));
737
+ uint64_t hash_value = Message_Hash(self->msg, self->msgdef, 0);
738
+ // RUBY_FIXNUM_MAX should be one less than a power of 2.
739
+ assert((RUBY_FIXNUM_MAX & (RUBY_FIXNUM_MAX + 1)) == 0);
740
+ return INT2FIX(hash_value & RUBY_FIXNUM_MAX);
738
741
  }
739
742
 
740
743
  /*
@@ -180,6 +180,7 @@ static void Arena_mark(void *data) {
180
180
  static void Arena_free(void *data) {
181
181
  Arena *arena = data;
182
182
  upb_arena_free(arena->arena);
183
+ xfree(arena);
183
184
  }
184
185
 
185
186
  static VALUE cArena;
@@ -237,8 +238,16 @@ void Arena_register(VALUE module) {
237
238
  // We use WeakMap for the cache. For Ruby <2.7 we also need a secondary Hash
238
239
  // to store WeakMap keys because Ruby <2.7 WeakMap doesn't allow non-finalizable
239
240
  // keys.
240
-
241
- #if RUBY_API_VERSION_CODE >= 20700
241
+ //
242
+ // We also need the secondary Hash if sizeof(long) < sizeof(VALUE), because this
243
+ // means it may not be possible to fit a pointer into a Fixnum. Keys are
244
+ // pointers, and if they fit into a Fixnum, Ruby doesn't collect them, but if
245
+ // they overflow and require allocating a Bignum, they could get collected
246
+ // prematurely, thus removing the cache entry. This happens on 64-bit Windows,
247
+ // on which pointers are 64 bits but longs are 32 bits. In this case, we enable
248
+ // the secondary Hash to hold the keys and prevent them from being collected.
249
+
250
+ #if RUBY_API_VERSION_CODE >= 20700 && SIZEOF_LONG >= SIZEOF_VALUE
242
251
  #define USE_SECONDARY_MAP 0
243
252
  #else
244
253
  #define USE_SECONDARY_MAP 1
@@ -325,7 +334,7 @@ static VALUE SecondaryMap_Get(VALUE key, bool create) {
325
334
  VALUE ret = rb_hash_lookup(secondary_map, key);
326
335
  if (ret == Qnil && create) {
327
336
  SecondaryMap_MaybeGC();
328
- ret = rb_eval_string("Object.new");
337
+ ret = rb_class_new_instance(0, NULL, rb_cObject);
329
338
  rb_hash_aset(secondary_map, key, ret);
330
339
  }
331
340
  return ret;
@@ -335,11 +344,9 @@ static VALUE SecondaryMap_Get(VALUE key, bool create) {
335
344
 
336
345
  // Requires: secondary_map_mutex is held by this thread iff create == true.
337
346
  static VALUE ObjectCache_GetKey(const void* key, bool create) {
338
- char buf[sizeof(key)];
339
- memcpy(&buf, &key, sizeof(key));
340
- intptr_t key_int = (intptr_t)key;
341
- PBRUBY_ASSERT((key_int & 3) == 0);
342
- VALUE ret = LL2NUM(key_int >> 2);
347
+ VALUE key_val = (VALUE)key;
348
+ PBRUBY_ASSERT((key_val & 3) == 0);
349
+ VALUE ret = LL2NUM(key_val >> 2);
343
350
  #if USE_SECONDARY_MAP
344
351
  ret = SecondaryMap_Get(ret, create);
345
352
  #endif
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
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: 3.16.0.rc.1
4
+ version: 3.17.0
5
5
  platform: x86-linux
6
6
  authors:
7
7
  - Protobuf Authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-07 00:00:00.000000000 Z
11
+ date: 2021-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler-dock
@@ -128,7 +128,7 @@ homepage: https://developers.google.com/protocol-buffers
128
128
  licenses:
129
129
  - BSD-3-Clause
130
130
  metadata:
131
- source_code_uri: https://github.com/protocolbuffers/protobuf/tree/v3.16.0-rc1/ruby
131
+ source_code_uri: https://github.com/protocolbuffers/protobuf/tree/v3.17.0/ruby
132
132
  post_install_message:
133
133
  rdoc_options: []
134
134
  require_paths:
@@ -143,9 +143,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
143
143
  version: 3.1.dev
144
144
  required_rubygems_version: !ruby/object:Gem::Requirement
145
145
  requirements:
146
- - - ">"
146
+ - - ">="
147
147
  - !ruby/object:Gem::Version
148
- version: 1.3.1
148
+ version: '0'
149
149
  requirements: []
150
150
  rubygems_version: 3.2.3
151
151
  signing_key: