I think that lazy-lock-after-change, which does not alter the region, should definitely come at the end of the after-change-functions list, after any hook functions which may change the region, not just c-after-change. Here is a patch to accomplish that.