From 53a576b31ef6e50066d62cd0bfae79afbd409234 Mon Sep 17 00:00:00 2001 From: david gauchard Date: Sat, 7 Apr 2018 23:01:13 +0200 Subject: [PATCH 1/3] pgm_read_*: cast address to const void* --- cores/esp8266/pgmspace.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cores/esp8266/pgmspace.h b/cores/esp8266/pgmspace.h index 256c4b99e5..928ef831ce 100644 --- a/cores/esp8266/pgmspace.h +++ b/cores/esp8266/pgmspace.h @@ -112,8 +112,8 @@ static inline uint16_t pgm_read_word_inlined(const void* addr) { } // Make sure, that libraries checking existence of this macro are not failing -#define pgm_read_byte(addr) pgm_read_byte_inlined(addr) -#define pgm_read_word(addr) pgm_read_word_inlined(addr) +#define pgm_read_byte(addr) pgm_read_byte_inlined((const void*)(addr)) +#define pgm_read_word(addr) pgm_read_word_inlined((const void*)(addr)) #else //__ets__ #define pgm_read_byte(addr) (*reinterpret_cast(addr)) From a055e4ab9923e35d55d0683222a6b7f046b46c67 Mon Sep 17 00:00:00 2001 From: david gauchard Date: Sun, 8 Apr 2018 23:49:47 +0200 Subject: [PATCH 2/3] casting pgm_read_+* only with __PROG_TYPES_COMPAT__, also add compatibility --- cores/esp8266/avr/pgmspace.h | 1 + cores/esp8266/pgmspace.h | 5 +++++ 2 files changed, 6 insertions(+) create mode 100644 cores/esp8266/avr/pgmspace.h diff --git a/cores/esp8266/avr/pgmspace.h b/cores/esp8266/avr/pgmspace.h new file mode 100644 index 0000000000..310b81e10f --- /dev/null +++ b/cores/esp8266/avr/pgmspace.h @@ -0,0 +1 @@ +#include "../pgmspace.h" diff --git a/cores/esp8266/pgmspace.h b/cores/esp8266/pgmspace.h index 928ef831ce..3e8e4edc1d 100644 --- a/cores/esp8266/pgmspace.h +++ b/cores/esp8266/pgmspace.h @@ -112,8 +112,13 @@ static inline uint16_t pgm_read_word_inlined(const void* addr) { } // Make sure, that libraries checking existence of this macro are not failing +#ifdef __PROG_TYPES_COMPAT__ #define pgm_read_byte(addr) pgm_read_byte_inlined((const void*)(addr)) #define pgm_read_word(addr) pgm_read_word_inlined((const void*)(addr)) +#else +#define pgm_read_byte(addr) pgm_read_byte_inlined(addr) +#define pgm_read_word(addr) pgm_read_word_inlined(addr) +#endif #else //__ets__ #define pgm_read_byte(addr) (*reinterpret_cast(addr)) From 9c9e74ce198f578d4cfb5b54297b37d6c0f6ff4b Mon Sep 17 00:00:00 2001 From: David Gauchard Date: Mon, 9 Apr 2018 09:51:17 +0200 Subject: [PATCH 3/3] restrict usage of prog_* deprecated typedefs to when __PROG_TYPES_COMPAT__ is defined --- cores/esp8266/pgmspace.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cores/esp8266/pgmspace.h b/cores/esp8266/pgmspace.h index 3e8e4edc1d..d793324dda 100644 --- a/cores/esp8266/pgmspace.h +++ b/cores/esp8266/pgmspace.h @@ -29,6 +29,8 @@ extern "C" { #define _SFR_BYTE(n) (n) +#ifdef __PROG_TYPES_COMPAT__ + typedef void prog_void; typedef char prog_char; typedef unsigned char prog_uchar; @@ -39,6 +41,8 @@ typedef uint16_t prog_uint16_t; typedef int32_t prog_int32_t; typedef uint32_t prog_uint32_t; +#endif // defined(__PROG_TYPES_COMPAT__) + #define SIZE_IRRELEVANT 0x7fffffff // memchr_P and memrchr_P are not implemented due to danger in its use, and