Merge branch 'bugfix/release_build' into 'master'

Release build related fixes

- Fix (non-)inlining issue with `spi_flash_guards_` functions in release mode
- Fix assert-related warnings generated in release mode by changing assert definition

Fixes https://github.com/espressif/esp-idf/issues/233

See merge request !428
This commit is contained in:
Ivan Grokhotkov
2017-01-17 14:24:14 +08:00
3 changed files with 10 additions and 6 deletions

View File

@@ -11,7 +11,7 @@ extern "C" {
#undef assert #undef assert
#ifdef NDEBUG /* required by ANSI standard */ #ifdef NDEBUG /* required by ANSI standard */
# define assert(__e) ((void)0) # define assert(__e) ((void) sizeof(__e))
#else #else
# define assert(__e) ((__e) ? (void)0 : __assert_func (__FILE__, __LINE__, \ # define assert(__e) ((__e) ? (void)0 : __assert_func (__FILE__, __LINE__, \
__ASSERT_FUNC, #__e)) __ASSERT_FUNC, #__e))

View File

@@ -163,8 +163,10 @@ esp_err_t PageManager::requestNewPage()
return err; return err;
} }
#ifndef NDEBUG
assert(usedEntries == newPage->getUsedEntryCount()); assert(usedEntries == newPage->getUsedEntryCount());
#endif
mPageList.erase(maxErasedItemsPageIt); mPageList.erase(maxErasedItemsPageIt);
mFreePageList.push_back(erasedPage); mFreePageList.push_back(erasedPage);

View File

@@ -103,16 +103,18 @@ SpiFlashOpResult IRAM_ATTR spi_flash_unlock()
return SPI_FLASH_RESULT_OK; return SPI_FLASH_RESULT_OK;
} }
static inline void spi_flash_guard_start() static inline void IRAM_ATTR spi_flash_guard_start()
{ {
if (s_flash_guard_ops) if (s_flash_guard_ops) {
s_flash_guard_ops->start(); s_flash_guard_ops->start();
}
} }
static inline void spi_flash_guard_end() static inline void IRAM_ATTR spi_flash_guard_end()
{ {
if (s_flash_guard_ops) if (s_flash_guard_ops) {
s_flash_guard_ops->end(); s_flash_guard_ops->end();
}
} }
esp_err_t IRAM_ATTR spi_flash_erase_sector(size_t sec) esp_err_t IRAM_ATTR spi_flash_erase_sector(size_t sec)