What do you think about rewriting these conditions like this:

~~~c
while (i < end && strchr("\t ", data[i]) != NULL)
~~~

Thus, we avoid the extra parenthesis and it's more concise.