What do you mean by "It's most likely not passing the webvtt_string struct by value"? I am passing it by value.. the compiler ensures that. Also, the function isn't changing anything in annotation it's just copying it and because it's actually modifying annotation->d and not annotation it doesn't really matter, does it? Please clarify.