diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2019-04-21 12:16:55 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-21 12:16:55 -0400 |
commit | 961f87e1c5d0cbe312a02997123e65fc315afb06 (patch) | |
tree | e1c0299317de6283fed65875326cd99995cf1b2e /core/shared_queue.js | |
parent | cd19da62d9efe37566fdeff16e37ed066edd3e3a (diff) |
Fixes #2033, shared queue push bug (#2158)
Diffstat (limited to 'core/shared_queue.js')
-rw-r--r-- | core/shared_queue.js | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/core/shared_queue.js b/core/shared_queue.js index 02aded748..aa3ff0aee 100644 --- a/core/shared_queue.js +++ b/core/shared_queue.js @@ -1,4 +1,20 @@ // Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. +/* +SharedQueue Binary Layout ++-------------------------------+-------------------------------+ +| NUM_RECORDS (32) | ++---------------------------------------------------------------+ +| NUM_SHIFTED_OFF (32) | ++---------------------------------------------------------------+ +| HEAD (32) | ++---------------------------------------------------------------+ +| OFFSETS (32) | ++---------------------------------------------------------------+ +| RECORD_ENDS (*MAX_RECORDS) ... ++---------------------------------------------------------------+ +| RECORDS (*MAX_RECORDS) ... ++---------------------------------------------------------------+ + */ (window => { const GLOBAL_NAMESPACE = "Deno"; @@ -69,7 +85,7 @@ let off = head(); let end = off + buf.byteLength; let index = numRecords(); - if (end > shared32.byteLength) { + if (end > shared32.byteLength || index >= MAX_RECORDS) { console.log("shared_queue.ts push fail"); return false; } @@ -141,6 +157,7 @@ setAsyncHandler, dispatch, sharedQueue: { + MAX_RECORDS, head, numRecords, size, |