@@ -59,24 +59,27 @@ module.exports = function(RED) {
5959
6060 while ( node . data . length > 0 ) {
6161 if ( this . overwriteFile === "true" ) {
62- node . wstream = fs . createWriteStream ( filename , { encoding :'binary' , flags :'w' } ) ;
62+ node . wstream = fs . createWriteStream ( filename , { encoding :'binary' , flags :'w' , autoClose : true } ) ;
6363 node . wstream . on ( "error" , function ( err ) {
6464 node . error ( RED . _ ( "file.errors.writefail" , { error :err . toString ( ) } ) , msg ) ;
6565 } ) ;
66+ node . wstream . write ( node . data . shift ( ) , function ( ) { node . wstream . end ( ) ; } ) ;
6667 }
6768 else {
68- if ( ! node . wstream ) {
69- node . wstream = fs . createWriteStream ( filename , { encoding :'binary' , flags :'a' } ) ;
69+ if ( ( ! node . wstream ) || ( ! node . filename ) ) {
70+ node . wstream = fs . createWriteStream ( filename , { encoding :'binary' , flags :'a' , autoClose : true } ) ;
7071 node . wstream . on ( "error" , function ( err ) {
7172 node . error ( RED . _ ( "file.errors.appendfail" , { error :err . toString ( ) } ) , msg ) ;
7273 } ) ;
7374 }
75+ if ( node . filename ) { node . wstream . write ( node . data . shift ( ) ) ; }
76+ else { node . wstream . write ( node . data . shift ( ) , function ( ) { node . wstream . end ( ) ; } ) ; }
7477 }
75- node . wstream . write ( node . data . shift ( ) ) ;
7678 }
7779 }
7880 } ) ;
7981 this . on ( 'close' , function ( ) {
82+ if ( node . wstream ) { node . wstream . end ( ) ; }
8083 node . status ( { } ) ;
8184 } ) ;
8285 }
0 commit comments