Commit da87e719 authored by kenrb's avatar kenrb Committed by Commit bot

Fix use of arraysize in GamepadProvider

Arraysize was being used for destination array sizes in memcpy and
memcmp, which returns the number of elements rather than the number of
bytes, as these functions expect. The result is that the entire arrays
were not getting copied.

BUG=469151

Review URL: https://codereview.chromium.org/1028673002

Cr-Commit-Position: refs/heads/master@{#321587}
parent 362e17dd
...@@ -171,34 +171,34 @@ bool GamepadProvider::PadState::Match(const WebGamepad& pad) const { ...@@ -171,34 +171,34 @@ bool GamepadProvider::PadState::Match(const WebGamepad& pad) const {
return connected_ == pad.connected && return connected_ == pad.connected &&
axes_length_ == pad.axesLength && axes_length_ == pad.axesLength &&
buttons_length_ == pad.buttonsLength && buttons_length_ == pad.buttonsLength &&
memcmp(id_, pad.id, arraysize(id_)) == 0 && memcmp(id_, pad.id, sizeof(id_)) == 0 &&
memcmp(mapping_, pad.mapping, arraysize(mapping_)) == 0; memcmp(mapping_, pad.mapping, sizeof(mapping_)) == 0;
} }
void GamepadProvider::PadState::SetPad(const WebGamepad& pad) { void GamepadProvider::PadState::SetPad(const WebGamepad& pad) {
connected_ = pad.connected; connected_ = pad.connected;
axes_length_ = pad.axesLength; axes_length_ = pad.axesLength;
buttons_length_ = pad.buttonsLength; buttons_length_ = pad.buttonsLength;
memcpy(id_, pad.id, arraysize(id_)); memcpy(id_, pad.id, sizeof(id_));
memcpy(mapping_, pad.mapping, arraysize(mapping_)); memcpy(mapping_, pad.mapping, sizeof(mapping_));
} }
void GamepadProvider::PadState::SetDisconnected() { void GamepadProvider::PadState::SetDisconnected() {
connected_ = false; connected_ = false;
axes_length_ = 0; axes_length_ = 0;
buttons_length_ = 0; buttons_length_ = 0;
memset(id_, 0, arraysize(id_)); memset(id_, 0, sizeof(id_));
memset(mapping_, 0, arraysize(mapping_)); memset(mapping_, 0, sizeof(mapping_));
} }
void GamepadProvider::PadState::AsWebGamepad(WebGamepad* pad) { void GamepadProvider::PadState::AsWebGamepad(WebGamepad* pad) {
pad->connected = connected_; pad->connected = connected_;
pad->axesLength = axes_length_; pad->axesLength = axes_length_;
pad->buttonsLength = buttons_length_; pad->buttonsLength = buttons_length_;
memcpy(pad->id, id_, arraysize(id_)); memcpy(pad->id, id_, sizeof(id_));
memcpy(pad->mapping, mapping_, arraysize(mapping_)); memcpy(pad->mapping, mapping_, sizeof(mapping_));
memset(pad->axes, 0, arraysize(pad->axes)); memset(pad->axes, 0, sizeof(pad->axes));
memset(pad->buttons, 0, arraysize(pad->buttons)); memset(pad->buttons, 0, sizeof(pad->buttons));
} }
void GamepadProvider::DoPoll() { void GamepadProvider::DoPoll() {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment