If you are going to read just one byte, then why use a while-loop ?
I know you took it from the Sparkfun source code, but that does not mean that you have to write the same cheesy code.
I think that this makes more sense:
Wire.requestFrom(I2CAddress, 1);
if (Wire.available() == 1)
{
result = Wire.read();
}
This command is wrong and can be removed: "// slave may send less than requested".
You can turn a parameter that is a pointer into "by reference". Then the source code is easier to read.