This is not a good way of doing things.

It's most likely not passing the webvtt_string struct by value, but if it is, any changes to it will not be seen by the caller, which actually creates more problems than it solves. If it's implicitly being passed as a pointer, then if anything it's a confusing way of presenting it.

Should change this parameter to accept a pointer to webvtt_string,