I think it was compiled and then corrupted at your location, possibly when you saved it after making the changes. The corruption was there when it was distributed. If that procedure wasn't one of the changes, it might have been compiled days, weeks, months or years before it was corrupted.
It is compiled when you error check. It is also compiled when you close the procedure window, leave the procedure window or save with the procedure window active, after making changes to the code. If your users can't or don't open the procedure window, it will not be compiled while they are using it.