From 29ba744d644482888aa2f90effef0fb8f04cb9fb Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Fri, 31 Dec 2021 13:09:53 +0100 Subject: [PATCH] Add a polyfill for `pgm_read_ptr()` (issue #1433) --- extras/tests/Helpers/progmem_emulation.hpp | 4 ---- src/ArduinoJson/Polyfills/pgmspace.hpp | 8 ++++++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/extras/tests/Helpers/progmem_emulation.hpp b/extras/tests/Helpers/progmem_emulation.hpp index 23925ba9..4b5cb3af 100644 --- a/extras/tests/Helpers/progmem_emulation.hpp +++ b/extras/tests/Helpers/progmem_emulation.hpp @@ -23,10 +23,6 @@ inline uint8_t pgm_read_byte(const void* p) { return *reinterpret_cast(convertFlashToPtr(p)); } -inline void* pgm_read_ptr(const void* p) { - return *reinterpret_cast(convertFlashToPtr(p)); -} - #define ARDUINOJSON_DEFINE_PROGMEM_ARRAY(type, name, value) \ static type const ARDUINOJSON_CONCAT2(name, _progmem)[] = value; \ static type const* name = reinterpret_cast( \ diff --git a/src/ArduinoJson/Polyfills/pgmspace.hpp b/src/ArduinoJson/Polyfills/pgmspace.hpp index 28ce4f8b..88aa98e9 100644 --- a/src/ArduinoJson/Polyfills/pgmspace.hpp +++ b/src/ArduinoJson/Polyfills/pgmspace.hpp @@ -103,3 +103,11 @@ inline uint32_t pgm_read_dword(ARDUINOJSON_NAMESPACE::pgm_p p) { return result; } #endif + +#ifndef pgm_read_ptr +inline void* pgm_read_ptr(ARDUINOJSON_NAMESPACE::pgm_p p) { + void* result; + memcpy_P(&result, p, sizeof(result)); + return result; +} +#endif