lightware_lase_serial: fix pointer for enabling serial mode

const char *data = "www\r\n";
Defines a cstring of 6 bytes: 'w', 'w', 'w', '\r', '\n', '\0'

type of data: char const*
type of &data: char const**

So when we call
write(_fd, &data, strlen(data));
then strlen(data) == 5
and we send the 4 byte memory address of data
+ some additional random byte.

Correct is
write(_fd, data, strlen(data));
where char const* gets casted to const void * and we pass
the pointer to the content of data.

The fundamental problem here is write() not being typesafe.
This commit is contained in:
Matthias Grob 2023-06-21 14:27:30 +02:00 committed by Beat Küng
parent fd267fb9a5
commit 18d89e4bc1

View File

@ -308,7 +308,7 @@ void LightwareLaserSerial::Run()
// LW20: Enable serial mode by sending some characters
if (hw_model == 8) {
const char *data = "www\r\n";
(void)!::write(_fd, &data, strlen(data));
(void)!::write(_fd, data, strlen(data));
}
}