Bug 95844 [Contributions] Unsafe setRedraw() in ToolbarManager.update
This code should protect itself by wrapping the code in a try{} finally{} to ensure the setRedraw(true) happens when it is done.
bundles/org.eclipse.jface/src/org/eclipse/jface/action/ToolBarManager.java
boolean useRedraw = (clean.size() - (mi.length - toRemove
						.size())) >= 3;
				if (useRedraw) {
					toolBar.setRedraw(false);
				}
				
				for (int i = toRemove.size(); --i >= 0;) {
					ToolItem item = (ToolItem) toRemove.get(i);
					if (!item.isDisposed()) {
						Control ctrl = item.getControl();
						if (ctrl != null) {
							item.setControl(null);
							ctrl.dispose();
						}
						item.dispose();
					}
				}
				
				IContributionItem src, dest;
				mi = toolBar.getItems();
				int srcIx = 0;
				int destIx = 0;
				for (Iterator e = clean.iterator(); e.hasNext();) {
					src = (IContributionItem) e.next();
					
					if (srcIx < mi.length)
						dest = (IContributionItem) mi[srcIx].getData();