On Tue, Jan 7, 2020 at 5:18 PM Dan Dedrick <dan.dedrick@xxxxxxxxx> wrote:
>
> These strings are not modified and it doesn't make sense that they ever
> would be. Setting these as const ensures that they will not be modified
> and allows const strings to be passed in without special manipulation.
>
> Specifically a call like the following will fail to compile:
> ftdi_eeprom_set_strings(&ftdi, "foo", "bar", "abc123");
>
> The error will look something like this:
> error: ISO C++ forbids converting a string constant to ‘char*’
> [-Werror=write-strings]
> ---
> src/ftdi.c | 4 ++--
> src/ftdi.h | 4 ++--
> 2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/src/ftdi.c b/src/ftdi.c
> index 988a9f1..9495fb5 100644
> --- a/src/ftdi.c
> +++ b/src/ftdi.c
> @@ -2724,8 +2724,8 @@ int ftdi_eeprom_initdefaults(struct ftdi_context *ftdi,
> char * manufacturer,
> return 0;
> }
>
> -int ftdi_eeprom_set_strings(struct ftdi_context *ftdi, char * manufacturer,
> - char * product, char * serial)
> +int ftdi_eeprom_set_strings(struct ftdi_context *ftdi, const char *
> manufacturer,
> + const char * product, const char * serial)
> {
> struct ftdi_eeprom *eeprom;
>
> diff --git a/src/ftdi.h b/src/ftdi.h
> index 8fcf719..7addeb9 100644
> --- a/src/ftdi.h
> +++ b/src/ftdi.h
> @@ -544,8 +544,8 @@ extern "C"
> char *manufacturer, int mnf_len,
> char *product, int prod_len,
> char *serial, int serial_len);
> - int ftdi_eeprom_set_strings(struct ftdi_context *ftdi, char *
> manufacturer,
> - char * product, char * serial);
> + int ftdi_eeprom_set_strings(struct ftdi_context *ftdi, const char *
> manufacturer,
> + const char * product, const char * serial);
>
> int ftdi_usb_open(struct ftdi_context *ftdi, int vendor, int product);
> int ftdi_usb_open_desc(struct ftdi_context *ftdi, int vendor, int
> product,
> --
> 2.7.4
Good catch.
Regards,
Yegor
--
libftdi - see http://www.intra2net.com/en/developer/libftdi for details.
To unsubscribe send a mail to libftdi+unsubscribe@xxxxxxxxxxxxxxxxxxxxxxx
|