In get_source in input.c:
char buf[1024 + 4]{};
char *res = buf;
size_t len = 1024;
should use obstacks.
int s = expstart.column - 1;
int l = expend.column - expstart.column + 1;
could be int l = expend.column - s; and then the if could probably be simplified as well.