Create commons-io-2.4-RC2.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/io/tags/2.4-RC2@1349498 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index a786b42..e24e1e1 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -25,7 +25,7 @@
 o IO-320:  Add XmlStreamReader support for UTF-32. Thanks to ggregory. 
 o IO-331:  BOMInputStream wrongly detects UTF-32LE_BOM files as UTF-16LE_BOM files in method getBOM(). Thanks to ggregory. 
 o IO-327:  Add byteCountToDisplaySize(BigInteger). Thanks to ggregory. 
-o IO-326:  Add new FileUtils.sizeOf[Directory] APIs to return BigInteger. Thanks to ggregory. 
+o IO-326:  Add new FileUtils.sizeOf[Directory] APIs to return BigInteger. Thanks to ggregory, kinow. 
 o IO-325:  Add IOUtils.toByteArray methods to work with URL and URI. Thanks to raviprak. 
 o IO-324:  Add missing Charset sister APIs to method that take a String charset name. Thanks to raviprak. 
 
diff --git a/pom.xml b/pom.xml
index 5b0297a..99bdc7f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>commons-io</groupId>
   <artifactId>commons-io</artifactId>
-  <version>2.4-SNAPSHOT</version>
+  <version>2.4</version>
   <name>Commons IO</name>
 
   <inceptionYear>2002</inceptionYear>
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index d45b3a6..ee45498 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -80,7 +80,7 @@
       <action issue="IO-327" dev="ggregory" type="add" due-to="ggregory">
         Add byteCountToDisplaySize(BigInteger).
       </action>            
-      <action issue="IO-326" dev="ggregory" type="add" due-to="ggregory">
+      <action issue="IO-326" dev="ggregory" type="add" due-to="ggregory, kinow">
         Add new FileUtils.sizeOf[Directory] APIs to return BigInteger.
       </action>            
       <action issue="IO-325" dev="ggregory" type="add" due-to="raviprak">
diff --git a/src/main/java/org/apache/commons/io/FileUtils.java b/src/main/java/org/apache/commons/io/FileUtils.java
index e1a281f..0372884 100644
--- a/src/main/java/org/apache/commons/io/FileUtils.java
+++ b/src/main/java/org/apache/commons/io/FileUtils.java
@@ -2511,7 +2511,7 @@
         for (final File file : files) {
             try {
                 if (!isSymlink(file)) {
-                    size.add(BigInteger.valueOf(sizeOf(file)));
+                    size = size.add(BigInteger.valueOf(sizeOf(file)));
                 }
             } catch (IOException ioe) {
                 // Ignore exceptions caught when asking if a File is a symlink.
diff --git a/src/test/java/org/apache/commons/io/FileUtilsTestCase.java b/src/test/java/org/apache/commons/io/FileUtilsTestCase.java
index 2acbf28..574f35d 100644
--- a/src/test/java/org/apache/commons/io/FileUtilsTestCase.java
+++ b/src/test/java/org/apache/commons/io/FileUtilsTestCase.java
@@ -64,6 +64,11 @@
     private static final BigInteger TEST_DIRECTORY_SIZE_BI = BigInteger.ZERO;
     
     /**
+     * Size (greater of zero) of test file.
+     */
+    private static final BigInteger TEST_DIRECTORY_SIZE_GT_ZERO_BI = BigInteger.valueOf(100);
+    
+    /**
      * List files recursively
      */
     private static final ListDirectoryWalker LIST_WALKER = new ListDirectoryWalker();
@@ -796,7 +801,8 @@
         try {
             FileUtils.sizeOfDirectoryAsBigInteger(file);
             fail("Exception expected.");
-        } catch (IllegalArgumentException ex) {}
+        } catch (IllegalArgumentException ex) {
+        }
 
         // Creates file
         file.createNewFile();
@@ -806,7 +812,8 @@
         try {
             FileUtils.sizeOfDirectoryAsBigInteger(file);
             fail("Exception expected.");
-        } catch (IllegalArgumentException ex) {}
+        } catch (IllegalArgumentException ex) {
+        }
 
         // Existing directory
         file.delete();
@@ -814,10 +821,21 @@
 
         this.createCircularSymLink(file);
 
-        assertEquals(
-            "Unexpected directory size",
-            TEST_DIRECTORY_SIZE_BI,
-            FileUtils.sizeOfDirectoryAsBigInteger(file));
+        assertEquals("Unexpected directory size", TEST_DIRECTORY_SIZE_BI, FileUtils.sizeOfDirectoryAsBigInteger(file));
+
+        // Existing directory which size is greater than zero
+        file.delete();
+        file.mkdir();
+
+        File nonEmptyFile = new File(file, "nonEmptyFile" + System.nanoTime());
+        this.createFile(nonEmptyFile, TEST_DIRECTORY_SIZE_GT_ZERO_BI.longValue());
+        nonEmptyFile.deleteOnExit();
+
+        assertEquals("Unexpected directory size", TEST_DIRECTORY_SIZE_GT_ZERO_BI,
+                FileUtils.sizeOfDirectoryAsBigInteger(file));
+
+        nonEmptyFile.delete();
+        file.delete();
     }
 
     /**