It is mostly question to frappe developers:
What are advantages of using cur_frm over frm or vice versa?
Maybe in some cases global var is not updated (by events) aspecially when you have calls on global scope?
I think one should avoid using global variables as much as possible. What do you think?