According to the reference document and regarding Serial.read():
The function returns "The first byte of incoming serial data available (or -1 if no data is available). "
I believe the portion within parenthesis may be incorrect. If receiving binary data (non-ascii) and the first incoming byte is 0xFF, Serial.read() will return -1 since 0xFF is -1 for a signed byte.
So, I have found that it's best not to check if the returned value is -1 to determine if data is available or not.
The code snippet as written works fine. But unless I am misunderstanding something, I would suggest removing "(or -1 if no data is available)" as data IS available, it just happens to be 0xFF.