See http://lists.llvm.org/pipermail/clangd-dev/2018-October/000171.html for context.
I kept the error (instead of downgrading to a log message) since the range lengths differing does indicate either a bug in the client or server range calculation or the buffers being out of sync (which both seems serious enough to me to be an error). If any existing clients aside from VSCode break they should only break when accidentally typing a Unicode character which should only be a minor nuisance for a little while until the bug is fixed in the respective client.
can we summarize this a bit?, e.g.
// EndIndex and StartIndex are in bytes, but rangeLength is in UTF-16 units
no need to explain exactly what the code is doing, just need to say why.