AbstractDocument.remove should perform all operations within a write lock
and the order is also fixed up by this patch.
2006-02-09 Roman Kennke <[EMAIL PROTECTED]>
* javax/swing/text/AbstractDocument.java
(remove): Perform all operations within a write lock and in the
correct order.
/Roman
Index: javax/swing/text/AbstractDocument.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/text/AbstractDocument.java,v
retrieving revision 1.44
diff -u -r1.44 AbstractDocument.java
--- javax/swing/text/AbstractDocument.java 7 Feb 2006 16:42:39 -0000 1.44
+++ javax/swing/text/AbstractDocument.java 9 Feb 2006 16:56:43 -0000
@@ -681,18 +681,18 @@
new DefaultDocumentEvent(offset, length,
DocumentEvent.EventType.REMOVE);
- removeUpdate(event);
-
- boolean shouldFire = content.getString(offset, length).length() != 0;
-
- writeLock();
- UndoableEdit temp = content.remove(offset, length);
- writeUnlock();
-
- postRemoveUpdate(event);
-
- if (shouldFire)
- fireRemoveUpdate(event);
+ try
+ {
+ writeLock();
+ UndoableEdit temp = content.remove(offset, length);
+ removeUpdate(event);
+ postRemoveUpdate(event);
+ fireRemoveUpdate(event);
+ }
+ finally
+ {
+ writeUnlock();
+ }
}
/**