Bug in AudioDataConverters?

I found a possible bug in the function that converts 24-bit integer array to float array. The bug seems to be present in both convertInt24LEToFloat and convertInt24BEToFloat functions:

juce_AudioDataConverters.cpp, around line 273:

for (int i = 0; i < numSamples; ++i)
            dest[i] = scale * (short) ByteOrder::littleEndian24Bit (intData);
            intData += srcBytesPerSample;

ByteOrder::littleEndian24 takes 3 bytes from intData and bit shifts them into int32. Now the returned value is casted to short that is two bytes long. Doesn’t that mean that we lose one byte that we need? It seems to work ok if we just remove (short).