Nit: alignment, should be:
```
for (i = 0; bufferLength < 16 &&
     i < sourceLength; ++i, ++bufferLength) {
```