To react on changes of a certain field of a node one needs to be able to compare the updated node with the original one. Thus for that we need the unchanged node!
Users of the rules module already heavily react on changes, as this is the common pattern there.
For d6 the node_load() cache being still there after doing a node_save() was the only possibility to retrieve the unchanged node after an update. However the current behaviour ofor the dedicated fix of would break that. Well it wasn't that clean anyway.
Ideally the API would make the unchanged node object available in hook_node_presave and hook_node_update - this is really important for any module that want to react on a change. Thus I did a patch, that implements that. Note that this doesn't break any existing API as PHP is fine with passing more arguments to a function than it takes.
This problem applies to all *_save() functions in drupal, so it should be fixed for all of them. However I'd suggest to figure it out right for nodes first, then I'll roll a patch for the others.
|PASSED: [[SimpleTest]]: [MySQL] 28,819 pass(es).|
|PASSED: [[SimpleTest]]: [MySQL] 28,769 pass(es).|
|FAILED: [[SimpleTest]]: [MySQL] 28,805 pass(es), 2 fail(s), and 0 exception(es).|
|FAILED: [[SimpleTest]]: [MySQL] Drupal installation failed.|
|PASSED: [[SimpleTest]]: [MySQL] 28,648 pass(es).|