Skip to content

Commit

Permalink
Provide workaround for 'dangling pointer' error/warning
Browse files Browse the repository at this point in the history
  • Loading branch information
mikee47 committed Oct 12, 2023
1 parent ee881ef commit 95ab9e4
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 1 deletion.
7 changes: 7 additions & 0 deletions Sming/Wiring/FakePgmSpace.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,10 @@ int memcmp_aligned(const void* ptr1, const void* ptr2, unsigned len)
auto tail2 = pgm_read_dword(reinterpret_cast<const uint8_t*>(ptr2) + len_aligned);
return memcmp(&tail1, &tail2, len - len_aligned);
}

#ifdef ARCH_HOST
char* smg_return_local(char* buf)
{
return buf;
}
#endif
9 changes: 8 additions & 1 deletion Sming/Wiring/FakePgmSpace.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,13 @@ extern "C" {
&__pstr__[0]; \
}))

#ifdef ARCH_HOST
// Internal function to prevent 'dangling pointer' compiler warning
extern char* smg_return_local(char* buf);
#else
#define smg_return_local(buf) (buf)
#endif

/**
* @brief Declare and use a flash string inline.
* @param str
Expand All @@ -84,7 +91,7 @@ extern "C" {
(__extension__({ \
DEFINE_PSTR_LOCAL(__pstr__, str); \
LOAD_PSTR(buf, __pstr__); \
buf; \
smg_return_local(buf); \
}))

/**
Expand Down

0 comments on commit 95ab9e4

Please sign in to comment.