From d3917b60651b67bcca511682ee822ef234929d3f Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@destailleur.fr>
Date: Thu, 11 May 2017 12:25:53 +0200
Subject: [PATCH] FIX Bad return code of dolCpyDir

---
 htdocs/core/lib/files.lib.php | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php
index 3d33fcb71f2..47501a86e8d 100644
--- a/htdocs/core/lib/files.lib.php
+++ b/htdocs/core/lib/files.lib.php
@@ -551,13 +551,23 @@ function dolCopyDir($srcfile, $destfile, $newmask, $overwriteifexists)
 						$dirmaskdec |= octdec('0200');  // Set w bit required to be able to create content for recursive subdirs files
                     	dol_mkdir($destfile."/".$file, '', decoct($dirmaskdec));
                     }
-                    $result=dolCopyDir($srcfile."/".$file, $destfile."/".$file, $newmask, $overwriteifexists);
+                    $tmpresult=dolCopyDir($srcfile."/".$file, $destfile."/".$file, $newmask, $overwriteifexists);
                 }
                 else
 				{
-                    $result=dol_copy($srcfile."/".$file, $destfile."/".$file, $newmask, $overwriteifexists);
+                    $tmpresult=dol_copy($srcfile."/".$file, $destfile."/".$file, $newmask, $overwriteifexists);
+                }
+                // Set result
+                if ($result > 0 && $tmpresult >= 0)
+                {
+                    // Do nothing, so we don't set result to 0 if tmpresult is 0 and result was success in a previous pass
+                }
+                else
+                {
+                    $result=$tmpresult;
                 }
                 if ($result < 0) break;
+                
             }
         }
         closedir($dir_handle);
-- 
GitLab