@@ -240,7 +240,12 @@ fs.read = function(fd, buffer, offset, length, position, callback) {
240240 } ;
241241 }
242242
243- binding . read ( fd , buffer , offset , length , position , callback || noop ) ;
243+ function wrapper ( err , bytesRead ) {
244+ // Retain a reference to buffer so that it can't be GC'ed too soon.
245+ callback && callback ( err , bytesRead || 0 , buffer ) ;
246+ }
247+
248+ binding . read ( fd , buffer , offset , length , position , wrapper ) ;
244249} ;
245250
246251fs . readSync = function ( fd , buffer , offset , length , position ) {
@@ -285,7 +290,12 @@ fs.write = function(fd, buffer, offset, length, position, callback) {
285290 return ;
286291 }
287292
288- binding . write ( fd , buffer , offset , length , position , callback || noop ) ;
293+ function wrapper ( err , written ) {
294+ // Retain a reference to buffer so that it can't be GC'ed too soon.
295+ callback && callback ( err , written || 0 , buffer ) ;
296+ }
297+
298+ binding . write ( fd , buffer , offset , length , position , wrapper ) ;
289299} ;
290300
291301fs . writeSync = function ( fd , buffer , offset , length , position ) {
0 commit comments