libftdi Archives

Subject: Re: [PATCH] libftdi: pass eeprom strings as const

From: Yegor Yefremov <yegorslists@xxxxxxxxxxxxxx>
To: libftdi@xxxxxxxxxxxxxxxxxxxxxxx
Cc: Dan Dedrick <dan.dedrick@xxxxxxxxx>
Date: Mon, 13 Jan 2020 12:34:49 +0100
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

Current Thread