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
else
						dest = null;
					if (dest != null && src.equals(dest)) {
						srcIx++;
						destIx++;
						continue;
					}
					if (dest != null && dest.isSeparator() && src.isSeparator()) {
						mi[srcIx].setData(src);
						srcIx++;
						destIx++;
						continue;
					}
					int start = toolBar.getItemCount();
					src.fill(toolBar, destIx);
					int newItems = toolBar.getItemCount() - start;
					for (int i = 0; i < newItems; i++) {
						ToolItem item = toolBar.getItem(destIx++);
						item.setData(src);
					}
				}
				
				for (int i = mi.length; --i >= srcIx;) {
					ToolItem item = mi[i];
					if (!item.isDisposed()) {
						Control ctrl = item.getControl();
						if (ctrl != null) {
							item.setControl(null);
							ctrl.dispose();
						}