Skip to content

Commit 3206faf

Browse files
committed
Remove some immediatly overwritten writes
Fix local variable being modified just before it goes out of scope When memcpy-ing in a buffer, only memset the part of the buffer not modified by the memcpy, not the whole buffer Also reorder the memset after the memcpy, to potentially avoid cache misses (NOT profiled)
1 parent db724df commit 3206faf

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

toxcore/Messenger.c

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -580,10 +580,12 @@ int m_copy_statusmessage(Messenger *m, int32_t friendnumber, uint8_t *buf, uint3
580580
{
581581
if (friend_not_valid(m, friendnumber))
582582
return -1;
583-
584-
memset(buf, 0, maxlen);
585-
memcpy(buf, m->friendlist[friendnumber].statusmessage, MIN(maxlen, m->friendlist[friendnumber].statusmessage_length));
586-
return MIN(maxlen, m->friendlist[friendnumber].statusmessage_length);
583+
584+
int msglen = MIN(maxlen, m->friendlist[friendnumber].statusmessage_length);
585+
586+
memcpy(buf, m->friendlist[friendnumber].statusmessage, msglen);
587+
memset(buf+msglen, 0, maxlen-msglen);
588+
return msglen;
587589
}
588590

589591
/* return the size of friendnumber's user status.
@@ -596,9 +598,10 @@ int m_get_self_statusmessage_size(Messenger *m)
596598

597599
int m_copy_self_statusmessage(Messenger *m, uint8_t *buf, uint32_t maxlen)
598600
{
599-
memset(buf, 0, maxlen);
600-
memcpy(buf, m->statusmessage, MIN(maxlen, m->statusmessage_length));
601-
return MIN(maxlen, m->statusmessage_length);
601+
int msglen = MIN(maxlen, m->statusmessage_length);
602+
memcpy(buf, m->statusmessage, msglen);
603+
memset(buf+msglen, 0, maxlen-msglen);
604+
return msglen;
602605
}
603606

604607
uint8_t m_get_userstatus(Messenger *m, int32_t friendnumber)
@@ -2693,7 +2696,6 @@ void messenger_save(Messenger *m, uint8_t *data)
26932696
memset(relays, 0, len);
26942697
copy_connected_tcp_relays(m->net_crypto, relays, NUM_SAVED_TCP_RELAYS);
26952698
memcpy(data, relays, len);
2696-
data += len;
26972699
}
26982700

26992701
static int messenger_load_state_callback(void *outer, const uint8_t *data, uint32_t length, uint16_t type)

0 commit comments

Comments
 (0)