@@ -57,7 +57,7 @@ const {
5757} = constants ;
5858
5959const pathModule = require ( 'path' ) ;
60- const { isArrayBufferView, isArrayBuffer } = require ( 'internal/util/types' ) ;
60+ const { isArrayBufferView, isArrayBuffer, isSharedArrayBuffer } = require ( 'internal/util/types' ) ;
6161
6262// We need to get the statValues from the binding at the callsite since
6363// it's re-initialized after deserialization.
@@ -821,7 +821,7 @@ function write(fd, buffer, offsetOrOptions, length, position, callback) {
821821 fd = getValidatedFd ( fd ) ;
822822
823823 let offset = offsetOrOptions ;
824- const bufferToWrite = isArrayBuffer ( buffer ) ? new Uint8Array ( buffer ) : buffer ;
824+ const bufferToWrite = isArrayBuffer ( buffer ) || isSharedArrayBuffer ( buffer ) ? new Uint8Array ( buffer ) : buffer ;
825825 if ( isArrayBufferView ( bufferToWrite ) ) {
826826 callback = maybeCallback ( callback || position || length || offset ) ;
827827
@@ -891,7 +891,7 @@ function writeSync(fd, buffer, offsetOrOptions, length, position) {
891891 let result ;
892892
893893 let offset = offsetOrOptions ;
894- if ( isArrayBuffer ( buffer ) ) {
894+ if ( isArrayBuffer ( buffer ) || isSharedArrayBuffer ( buffer ) ) {
895895 buffer = new Uint8Array ( buffer ) ;
896896 }
897897 if ( isArrayBufferView ( buffer ) ) {
@@ -2184,7 +2184,7 @@ function writeFile(path, data, options, callback) {
21842184 options = getOptions ( options , { encoding : 'utf8' , mode : 0o666 , flag : 'w' } ) ;
21852185 const flag = options . flag || 'w' ;
21862186
2187- if ( isArrayBuffer ( data ) ) {
2187+ if ( isArrayBuffer ( data ) || isSharedArrayBuffer ( data ) ) {
21882188 data = new Uint8Array ( data ) ;
21892189 }
21902190
@@ -2228,7 +2228,7 @@ function writeFile(path, data, options, callback) {
22282228function writeFileSync ( path , data , options ) {
22292229 options = getOptions ( options , { encoding : 'utf8' , mode : 0o666 , flag : 'w' } ) ;
22302230
2231- if ( isArrayBuffer ( data ) ) {
2231+ if ( isArrayBuffer ( data ) || isSharedArrayBuffer ( data ) ) {
22322232 data = new Uint8Array ( data ) ;
22332233 }
22342234
0 commit comments