Browse Source

synchronize access to default excludes. PR 52188.

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@1234276 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 13 years ago
parent
commit
379895a022
2 changed files with 15 additions and 4 deletions
  1. +3
    -0
      WHATSNEW
  2. +12
    -4
      src/main/org/apache/tools/ant/DirectoryScanner.java

+ 3
- 0
WHATSNEW View File

@@ -119,6 +119,9 @@ Fixed bugs:
* ZipFile didn't work properly for archives using unicode extra * ZipFile didn't work properly for archives using unicode extra
fields rather than UTF-8 filenames and the EFS-Flag. fields rather than UTF-8 filenames and the EFS-Flag.


* Access to DirectoryScanner's default excludes wasn't synchronized.
BigZilla Report 52188.

Other changes: Other changes:
-------------- --------------




+ 12
- 4
src/main/org/apache/tools/ant/DirectoryScanner.java View File

@@ -216,7 +216,7 @@ public class DirectoryScanner
* *
* @see #addDefaultExcludes() * @see #addDefaultExcludes()
*/ */
private static Set defaultExcludes = new HashSet();
private static final Set defaultExcludes = new HashSet();
static { static {
resetDefaultExcludes(); resetDefaultExcludes();
} }
@@ -557,8 +557,10 @@ public class DirectoryScanner
* @since Ant 1.6 * @since Ant 1.6
*/ */
public static String[] getDefaultExcludes() { public static String[] getDefaultExcludes() {
synchronized (defaultExcludes) {
return (String[]) defaultExcludes.toArray(new String[defaultExcludes return (String[]) defaultExcludes.toArray(new String[defaultExcludes
.size()]); .size()]);
}
} }


/** /**
@@ -572,7 +574,9 @@ public class DirectoryScanner
* @since Ant 1.6 * @since Ant 1.6
*/ */
public static boolean addDefaultExclude(String s) { public static boolean addDefaultExclude(String s) {
synchronized (defaultExcludes) {
return defaultExcludes.add(s); return defaultExcludes.add(s);
}
} }


/** /**
@@ -587,7 +591,9 @@ public class DirectoryScanner
* @since Ant 1.6 * @since Ant 1.6
*/ */
public static boolean removeDefaultExclude(String s) { public static boolean removeDefaultExclude(String s) {
synchronized (defaultExcludes) {
return defaultExcludes.remove(s); return defaultExcludes.remove(s);
}
} }


/** /**
@@ -596,10 +602,12 @@ public class DirectoryScanner
* @since Ant 1.6 * @since Ant 1.6
*/ */
public static void resetDefaultExcludes() { public static void resetDefaultExcludes() {
defaultExcludes = new HashSet();
synchronized (defaultExcludes) {
defaultExcludes.clear();
for (int i = 0; i < DEFAULTEXCLUDES.length; i++) { for (int i = 0; i < DEFAULTEXCLUDES.length; i++) {
defaultExcludes.add(DEFAULTEXCLUDES[i]); defaultExcludes.add(DEFAULTEXCLUDES[i]);
} }
}
} }


/** /**
@@ -1739,11 +1747,11 @@ public class DirectoryScanner
public synchronized void addDefaultExcludes() { public synchronized void addDefaultExcludes() {
int excludesLength = excludes == null ? 0 : excludes.length; int excludesLength = excludes == null ? 0 : excludes.length;
String[] newExcludes; String[] newExcludes;
newExcludes = new String[excludesLength + defaultExcludes.size()];
String[] defaultExcludesTemp = getDefaultExcludes();
newExcludes = new String[excludesLength + defaultExcludesTemp.length];
if (excludesLength > 0) { if (excludesLength > 0) {
System.arraycopy(excludes, 0, newExcludes, 0, excludesLength); System.arraycopy(excludes, 0, newExcludes, 0, excludesLength);
} }
String[] defaultExcludesTemp = getDefaultExcludes();
for (int i = 0; i < defaultExcludesTemp.length; i++) { for (int i = 0; i < defaultExcludesTemp.length; i++) {
newExcludes[i + excludesLength] = newExcludes[i + excludesLength] =
defaultExcludesTemp[i].replace('/', File.separatorChar) defaultExcludesTemp[i].replace('/', File.separatorChar)


Loading…
Cancel
Save