The query cache needs some extra space in the query string to store some
stuff.
But when the Query_log_event constructor allocates this space, it allocates
QUERY_CACHE_DB_LENGTH_SIZE bytes too few (2 bytes).
I am not sure if this is actually reproducible - it requires that a query is
binlogged with invoker (typically for CREATE VIEW and the like) and that it
hits the query cache (typically a SELECT). Otherwise two extra dummy bytes
becomes available due to zero terminators for invoker not being used.
But I will still fix the code to be at least more clear (and in case there is
some obscure way to hit this).