mini_racer 0.17.0.pre11 → 0.17.0.pre12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6851fdd7226dd520cf865af8b60e64b3456a0b0cfd31a22d4f275495c8f42aef
4
- data.tar.gz: ffd5db728de9571a2b7e7d83348a95b658809d36f869050338c1f5b0a814146b
3
+ metadata.gz: b2323caa96e4a3fae90be312b1d8788f2f2e663e586849ef03e97968c24c83a3
4
+ data.tar.gz: 5681ed08f41984354aa940919b295c0ff1d1fcfecc2a3a8e26b7f91874ae97d0
5
5
  SHA512:
6
- metadata.gz: 76e7edac2249f6aa850bd03f1a7d4c353095f4e3f0a89466c83763f945de44ac68881b57d5b784ac7b6391dd467812a7d27eeeba98ba13624f60dbe4e1db70ab
7
- data.tar.gz: 9519ee4b2601ab14a0a1898518bdcda5f318b66b4b4631d7881c2e83ea656c461cbf3fa38682d8702234e01d1cad7c2358125c9b4689333db686ca7207b27fc0
6
+ metadata.gz: 65e746097f2db9dbe8d36c95ab55d7ff0f5f6a35cfbe92b09e8ed0071e83471193555fa1e0c104880c054a0ad8e4c9807cc524922723c28a67d8029f8af6e265
7
+ data.tar.gz: 0c33c64e22d93312346d0edc6c4602a5bdb991b6c5077d8505d14b3b885469212f999e4a17ae5c32aa238416ebaab8354b0d3973b861e1f5923378776039a33d
data/CHANGELOG CHANGED
@@ -1,3 +1,6 @@
1
+ - 0.17.0.pre12 - 23-07-2025
2
+ - Corrected off-by-one error with object serialization - Ben Noordhuis
3
+
1
4
  - 0.17.0.pre11 - 21-01-2025
2
5
  - Corrected encoding bug with deserialization of strings - Ben Noordhuis
3
6
 
@@ -611,6 +611,13 @@ static int serialize1(Ser *s, VALUE refs, VALUE v)
611
611
  return 0;
612
612
  }
613
613
 
614
+ // don't mix with ser_array_begin/ser_object_begin because
615
+ // that will throw off the object reference count
616
+ static int serialize(Ser *s, VALUE v)
617
+ {
618
+ return serialize1(s, rb_hash_new(), v);
619
+ }
620
+
614
621
  static struct timespec deadline_ms(int ms)
615
622
  {
616
623
  static const int64_t ns_per_sec = 1000*1000*1000;
@@ -859,18 +866,11 @@ static void *rendezvous_callback(void *arg)
859
866
  goto fail;
860
867
  }
861
868
  ser_init1(&s, 'c'); // callback reply
862
- ser_array_begin(&s, 2);
863
- // either [result, undefined] or [undefined, err]
864
- if (exc)
865
- ser_undefined(&s);
866
- if (serialize1(&s, rb_hash_new(), r)) { // should not happen
869
+ if (serialize(&s, r)) { // should not happen
867
870
  c->exception = rb_exc_new_cstr(internal_error, s.err);
868
871
  ser_reset(&s);
869
872
  goto fail;
870
873
  }
871
- if (!exc)
872
- ser_undefined(&s);
873
- ser_array_end(&s, 2);
874
874
  out:
875
875
  buf_move(&s.b, a->req);
876
876
  return NULL;
@@ -1202,25 +1202,21 @@ static VALUE context_stop(VALUE self)
1202
1202
 
1203
1203
  static VALUE context_call(int argc, VALUE *argv, VALUE self)
1204
1204
  {
1205
- VALUE a, e, h;
1205
+ VALUE name, args;
1206
+ VALUE a, e;
1206
1207
  Context *c;
1207
- int i;
1208
1208
  Ser s;
1209
1209
 
1210
1210
  TypedData_Get_Struct(self, Context, &context_type, c);
1211
- rb_scan_args(argc, argv, "1*", &a, &e);
1212
- Check_Type(a, T_STRING);
1211
+ rb_scan_args(argc, argv, "1*", &name, &args);
1212
+ Check_Type(name, T_STRING);
1213
+ rb_ary_unshift(args, name);
1213
1214
  // request is (C)all, [name, args...] array
1214
1215
  ser_init1(&s, 'C');
1215
- ser_array_begin(&s, argc);
1216
- h = rb_hash_new();
1217
- for (i = 0; i < argc; i++) {
1218
- if (serialize1(&s, h, argv[i])) {
1219
- ser_reset(&s);
1220
- rb_raise(runtime_error, "Context.call: %s", s.err);
1221
- }
1216
+ if (serialize(&s, args)) {
1217
+ ser_reset(&s);
1218
+ rb_raise(runtime_error, "Context.call: %s", s.err);
1222
1219
  }
1223
- ser_array_end(&s, argc);
1224
1220
  // response is [result, err] array
1225
1221
  a = rendezvous(c, &s.b); // takes ownership of |s.b|
1226
1222
  e = rb_ary_pop(a);
@@ -378,18 +378,7 @@ void v8_api_callback(const v8::FunctionCallbackInfo<v8::Value>& info)
378
378
  des.ReadHeader(st.context).Check();
379
379
  v8::Local<v8::Value> result;
380
380
  if (!des.ReadValue(st.context).ToLocal(&result)) return; // exception pending
381
- v8::Local<v8::Object> response; // [result, err]
382
- if (!result->ToObject(st.context).ToLocal(&response)) return;
383
- v8::Local<v8::Value> err;
384
- if (!response->Get(st.context, 1).ToLocal(&err)) return;
385
- if (err->IsUndefined()) {
386
- if (!response->Get(st.context, 0).ToLocal(&result)) return;
387
- info.GetReturnValue().Set(result);
388
- } else {
389
- v8::Local<v8::String> message;
390
- if (!err->ToString(st.context).ToLocal(&message)) return;
391
- st.isolate->ThrowException(v8::Exception::Error(message));
392
- }
381
+ info.GetReturnValue().Set(result);
393
382
  }
394
383
 
395
384
  // response is err or empty string
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MiniRacer
4
- VERSION = "0.17.0.pre11"
4
+ VERSION = "0.17.0.pre12"
5
5
  LIBV8_NODE_VERSION = "~> 22.7.0.4"
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mini_racer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.0.pre11
4
+ version: 0.17.0.pre12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Saffron
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-01-20 00:00:00.000000000 Z
11
+ date: 2025-01-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -123,9 +123,9 @@ licenses:
123
123
  - MIT
124
124
  metadata:
125
125
  bug_tracker_uri: https://github.com/discourse/mini_racer/issues
126
- changelog_uri: https://github.com/discourse/mini_racer/blob/v0.17.0.pre11/CHANGELOG
127
- documentation_uri: https://www.rubydoc.info/gems/mini_racer/0.17.0.pre11
128
- source_code_uri: https://github.com/discourse/mini_racer/tree/v0.17.0.pre11
126
+ changelog_uri: https://github.com/discourse/mini_racer/blob/v0.17.0.pre12/CHANGELOG
127
+ documentation_uri: https://www.rubydoc.info/gems/mini_racer/0.17.0.pre12
128
+ source_code_uri: https://github.com/discourse/mini_racer/tree/v0.17.0.pre12
129
129
  post_install_message:
130
130
  rdoc_options: []
131
131
  require_paths: