I don't see how this really addresses the problem.

It will use a much larger block size if the maximum records size matches the default, but could easily use a smaller one if it was previously larger.

But, blockSize is the size that is read in for a block - so I think it is just co-incidence that this fixes it.  The code that finds the split point keeps reading in blocks of data until it has read at least maxRecordSize.

If anything this change should be modifying maxRecordSize if it matches the default to use a different default.  It should also probably be in a different pull request for a different issue.