Update wrench.js
Fixes a bug (not sure if has been reported). `copyDirRecursive` calls itself from the `rmdirRecursive` callback when newDir exists. It should call itself with the original copyDirRecursive arguments, not the callback arguments. Also `fun.apply(thisArg, argsArray)` expects argsArray to be an array (see [here](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply)) but `arguments` is not an array (see [here](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments))
This commit is contained in:
parent
81d7fa5cf9
commit
e3a696c40f
1 changed files with 2 additions and 1 deletions
|
|
@ -323,11 +323,12 @@ exports.rmdirRecursive = function rmdirRecursive(dir, failSilent, clbk){
|
||||||
* Note: Directories should be passed to this function without a trailing slash.
|
* Note: Directories should be passed to this function without a trailing slash.
|
||||||
*/
|
*/
|
||||||
exports.copyDirRecursive = function copyDirRecursive(srcDir, newDir, opts, clbk) {
|
exports.copyDirRecursive = function copyDirRecursive(srcDir, newDir, opts, clbk) {
|
||||||
|
var originalArguments = Array.prototype.slice.apply(arguments);
|
||||||
fs.stat(newDir, function(err, newDirStat){
|
fs.stat(newDir, function(err, newDirStat){
|
||||||
if(!err) {
|
if(!err) {
|
||||||
if(typeof opts !== 'undefined' && typeof opts !== 'function' && opts.forceDelete)
|
if(typeof opts !== 'undefined' && typeof opts !== 'function' && opts.forceDelete)
|
||||||
return exports.rmdirRecursive(newDir, function(err){
|
return exports.rmdirRecursive(newDir, function(err){
|
||||||
copyDirRecursive.apply(this, arguments);
|
copyDirRecursive.apply(this, originalArguments);
|
||||||
});
|
});
|
||||||
else
|
else
|
||||||
return clbk(new Error('You are trying to delete a directory that already exists. Specify forceDelete in an options object to override this.'));
|
return clbk(new Error('You are trying to delete a directory that already exists. Specify forceDelete in an options object to override this.'));
|
||||||
|
|
|
||||||
Reference in a new issue