when uimenu (undo redo) callback goes to undo or redo functions, the parent of the hObject is uimenu and not the figure itself. The parent of uimenu is figure. which means if you want to call figure, you have to write
hObject.Parent.Parent
so when you call
entries=hObject.Parent.UserData;
for uimenu, the parent is uimenu and not the figure while for buttons of redo and undo the parent is figure itself
Best Answer