*/
public void setString(String value, int item) {
if (isArray() && item >= 0) {
- List<String> values = BundleHelper.parseList(this.value, -1);
- for (int i = values.size(); i <= item; i++) {
- values.add(null);
- }
- values.set(item, value);
- this.value = BundleHelper.fromList(values);
+ this.value = BundleHelper.fromList(this.value, value, item);
} else {
this.value = value;
}
value = null;
}
- for (Runnable listener : reloadedListeners) {
+ // Copy the list so we can create new listener in a listener
+ for (Runnable listener : new ArrayList<Runnable>(reloadedListeners)) {
try {
listener.run();
} catch (Exception e) {
* dirty flag)
*/
public void save(boolean onlyIfDirty) {
- for (Runnable listener : saveListeners) {
+ // Copy the list so we can create new listener in a listener
+ for (Runnable listener : new ArrayList<Runnable>(saveListeners)) {
try {
listener.run();
} catch (Exception e) {