Agreed that when reopening you don't want to pass in the OCREAT flag.
Before, when opening it for writing it also added the OREADER flag, is that not needed here? (Maybe writing implies reading, but then definition of default_mode in camltc is a bit redundant.)
Your answer doesn't give a reason for having OCREAT though. Actually you just argued that having this option available and passed into the reopen function is buggy.