diff options
author | Valentin Anger <syrupthinker@gryphno.de> | 2020-07-08 17:23:50 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-08 11:23:50 -0400 |
commit | be7e0f2d490ca480aaa154845c4c5c6dccbd7546 (patch) | |
tree | b2a2d284c490a2a1cd8ec3b6175ea5d4077cc65e /cli/ops/dispatch_json.rs | |
parent | cbbd9443592f79f6abf9e5019840de4e01ff8580 (diff) |
BREAKING(core): Remove control slice from ops (#6048)
Diffstat (limited to 'cli/ops/dispatch_json.rs')
-rw-r--r-- | cli/ops/dispatch_json.rs | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/cli/ops/dispatch_json.rs b/cli/ops/dispatch_json.rs index 97a02991f..26ffc7d33 100644 --- a/cli/ops/dispatch_json.rs +++ b/cli/ops/dispatch_json.rs @@ -46,7 +46,7 @@ struct AsyncArgs { pub fn json_op<D>( d: D, -) -> impl Fn(&mut CoreIsolateState, &[u8], &mut [ZeroCopyBuf]) -> Op +) -> impl Fn(&mut CoreIsolateState, &mut [ZeroCopyBuf]) -> Op where D: Fn( &mut CoreIsolateState, @@ -54,10 +54,9 @@ where &mut [ZeroCopyBuf], ) -> Result<JsonOp, OpError>, { - move |isolate_state: &mut CoreIsolateState, - control: &[u8], - zero_copy: &mut [ZeroCopyBuf]| { - let async_args: AsyncArgs = match serde_json::from_slice(control) { + move |isolate_state: &mut CoreIsolateState, zero_copy: &mut [ZeroCopyBuf]| { + assert!(!zero_copy.is_empty(), "Expected JSON string at position 0"); + let async_args: AsyncArgs = match serde_json::from_slice(&zero_copy[0]) { Ok(args) => args, Err(e) => { let buf = serialize_result(None, Err(OpError::from(e))); @@ -67,9 +66,9 @@ where let promise_id = async_args.promise_id; let is_sync = promise_id.is_none(); - let result = serde_json::from_slice(control) + let result = serde_json::from_slice(&zero_copy[0]) .map_err(OpError::from) - .and_then(|args| d(isolate_state, args, zero_copy)); + .and_then(|args| d(isolate_state, args, &mut zero_copy[1..])); // Convert to Op match result { |