Skip to content

Commit

Permalink
Replace memset(int32_t*, -1, _) with a for-loop
Browse files Browse the repository at this point in the history
memset() treats the passed buffer as a char* array, assigning to every
1-byte of the array the value. So for a single 4-byte int32_t element,
it is assigning bytes 0, 1, 2 and 3 of it to -1. It happens that -1 is
0xFF, so in the end the uint32_t is set to 0xFFFFFFFF, which is -1 in
the two's complement, so the memset() actually produces the correct
result in the end, assuming the platform uses two's complement integers.

Assigning it in the loop is less error-prone, as using memset() on
non-1-byte wide arrays with a non-zero value is fishy, and it is more
portable as we don't have to assume the use of two's complement.

On IRC, @robinlinden has pointed out that two's complement is the only
integer format in C23 so perhaps we shouldn't be as concerned with the
portability, but @iphy said that it's still a good idea to use a
for-loop for this case.
  • Loading branch information
nurupo committed Dec 13, 2023
1 parent 6645343 commit fa337ca
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 2 deletions.
2 changes: 1 addition & 1 deletion other/bootstrap_daemon/docker/tox-bootstrapd.sha256
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3c31e0cef0463b0a37bb21c5322c1a219314404b2a93193f4fba49f901a9dfb6 /usr/local/bin/tox-bootstrapd
92d0601d778487206505dce0bf89242b89b37424dc756808472fef3c22621ade /usr/local/bin/tox-bootstrapd
4 changes: 3 additions & 1 deletion toxcore/group_chats.c
Original file line number Diff line number Diff line change
Expand Up @@ -7224,7 +7224,9 @@ static int get_new_group_index(GC_Session *c)

c->chats[new_index] = empty_gc_chat;

memset(&c->chats[new_index].saved_invites, -1, sizeof(c->chats[new_index].saved_invites));
for (size_t i = 0; i < sizeof(c->chats[new_index].saved_invites)/sizeof(*c->chats[new_index].saved_invites); ++i) {
c->chats[new_index].saved_invites[i] = -1;
}

++c->chats_index;

Expand Down

0 comments on commit fa337ca

Please sign in to comment.