Author: vgritsenko
Date: Fri Oct 27 20:07:13 2006
New Revision: 468622
URL: http://svn.apache.org/viewvc?view=rev&rev=468622
Log:
fix potential NPE
Modified:
xml/xindice/trunk/java/src/org/apache/xindice/util/Configuration.java
Modified: xml/xindice/trunk/java/src/org/apache/xindice/util/Configuration.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/util/Configuration.java?view=diff&rev=468622&r1=468621&r2=468622
==============================================================================
--- xml/xindice/trunk/java/src/org/apache/xindice/util/Configuration.java (original)
+++ xml/xindice/trunk/java/src/org/apache/xindice/util/Configuration.java Fri Oct 27 20:07:13 2006
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2004 The Apache Software Foundation.
+ * Copyright 1999-2006 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*
- * CVS $Id$
+ * $Id$
*/
package org.apache.xindice.util;
@@ -38,7 +38,7 @@
* fashion.
*
* @see org.apache.xindice.util.Configurable
- * @version CVS $Revision$, $Date$
+ * @version $Revision$, $Date$
*/
public final class Configuration {
@@ -643,11 +643,18 @@
*/
public void processChildren(ConfigurationCallback callback) {
NodeList list = config.getChildNodes();
- int size = list.getLength();
+
+ // Copy node list into array since callback can alter the configuration
+ Node[] nl = new Node[list.getLength()];
+ for (int i = 0; i < nl.length; i++) {
+ nl[i] = list.item(i);
+ }
+
+ int size = nl.length;
try {
for (int i = 0; i < size; i++) {
- if (list.item(i).getNodeType() == Node.ELEMENT_NODE) {
- callback.process(new Configuration(this, (Element) list.item(i), readOnly));
+ if (nl[i].getNodeType() == Node.ELEMENT_NODE) {
+ callback.process(new Configuration(this, (Element) nl[i], readOnly));
}
}
} catch (Exception e) {
@@ -667,6 +674,7 @@
public void processChildren(String name, ConfigurationCallback callback) {
NodeList list = config.getChildNodes();
+ // Copy node list into array since callback can alter the configuration
Node[] nl = new Node[list.getLength()];
for (int i = 0; i < nl.length; i++) {
nl[i] = list.item(i);
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.