Bug 84446 OperationHistory should protect itself better against runtime exceptions
Since clients of the history might rely on getting certain events even if a operation causes runtime exceptions (for example listeners) the history should protect itself better agains runtime exceptions. This envloves: - listeners causing runtime exceptions in the call back - Operation execution causing runtime exceptions. In this case listeners must be informed as well.
bundles/org.eclipse.core.commands/src/org/eclipse/core/commands/operations/DefaultOperationHistory.java
if (fBatchingOperation != null) {
			if (fBatchingOperation.hasContext(context)) {
				notifyNotOK(fBatchingOperation);
				fBatchingOperation = null;
			} 
		}
	}
	/*
	 * Force the redo history for the given context to contain max or less items.
	 */
	private void forceRedoLimit(IUndoContext context, int max) {
		Object[] filtered = filter(fRedo, context);
		int size = filtered.length;
		if (size > 0) {
			int index = 0;
			while (size > max) {
				IUndoableOperation removed = (IUndoableOperation)filtered[index];
				if (context == GLOBAL_UNDO_CONTEXT || removed.getContexts().length == 1) {
					/* remove the operation if we are enforcing a global limit or if
					 * the operation only has the specified context
					 */
					fRedo.remove(removed);
					internalRemove(removed);
				} else {
					/* if the operation has multiple contexts and we've reached the limit 
					 * for only one of them, then just remove the context, not the operation.
					 */
					removed.removeContext(context);
				}