It returns a pointer to a local variable (message_buffer). The local variable will be overwritten once the AR space is reused, and so the pointer is meaningless.