It makes the code smaller and faster to set a flag when malloc fails, rather than trying to test for the failure all the way back up the stack. The flag used to be a global variable. But that was causing problems for embedded device manufacturers.
Doesn't *nix have the __declspec(thread) modifier? Your malloc failure flag could still be a global variable with those attributes ...