Confirmed.
It looks like VS2013 (in my case) changes the order of execution in this line:
imgdata.makernotes.fuji.FujiExpoMidPointShift = ((short)get2()) / fMAX(1.0f, get2());
Replacing it with
float val0 = get2();
float val1 = get2();
imgdata.makernotes.fuji.FujiExpoMidPointShift = ((short)val0) / fMAX(1.0f,val1);
fixes the problem.
Is divide args should be evaluated left to right or not?
Confirmed.
It looks like VS2013 (in my case) changes the order of execution in this line:
imgdata.makernotes.fuji.FujiExpoMidPointShift = ((short)get2()) / fMAX(1.0f, get2());
Replacing it with
float val0 = get2();
float val1 = get2();
imgdata.makernotes.fuji.FujiExpoMidPointShift = ((short)val0) / fMAX(1.0f,val1);
fixes the problem.
Is divide args should be evaluated left to right or not?