Use strdup() in Client_textmessage().
authorTilman Sauerbeck <tilman@code-monkey.de>
Mon, 1 Jan 2018 10:58:56 +0000 (11:58 +0100)
committerTilman Sauerbeck <tilman@code-monkey.de>
Mon, 1 Jan 2018 18:12:54 +0000 (19:12 +0100)
This is more efficient than the combination of malloc(), strlen() and
strcpy() that we used before.

src/client.c

index d61de2b00a0297adda0f300a2ed750395998bac4..5b76b7e3c6d1a3bd1a1f4f3df101e012a2f44203 100644 (file)
@@ -670,14 +670,18 @@ void Client_textmessage(client_t *client, char *text)
        uint32_t *tree_id;
        message_t *sendmsg = NULL;
 
-       message = Memory_safeMalloc(1, strlen(text) + 1);
+       message = strdup(text);
+
+       if (message == NULL)
+               Log_fatal("Out of memory");
+
        tree_id = Memory_safeMalloc(1, sizeof(uint32_t));
        *tree_id = 0;
        sendmsg = Msg_create(TextMessage);
        sendmsg->payload.textMessage->message = message;
        sendmsg->payload.textMessage->n_tree_id = 1;
        sendmsg->payload.textMessage->tree_id = tree_id;
-       strcpy(message, text);
+
        Client_send_message(client, sendmsg);
 }