fix(sdmmc): BDL calculate sectors cast fix

Closes https://github.com/espressif/esp-idf/issues/18875
This commit is contained in:
Adam Múdry
2026-07-21 15:03:07 +02:00
parent d52b12fe11
commit 50b715d93f
3 changed files with 66 additions and 15 deletions
@@ -15,9 +15,35 @@
#include "sdmmc_test_begin_end_sd.h"
#include "sdmmc_test_rw_common.h"
#include "esp_blockdev.h"
#include "esp_private/sdmmc_blockdev.h"
#define TEST_MEMORY_LEAK_THRESHOLD (200)
TEST_CASE("sdmmc blockdev converts byte ranges to sectors", "[sdmmc]")
{
size_t start_sector;
size_t sector_count;
TEST_ESP_OK(sdmmc_blockdev_calculate_sectors(512, UINT64_C(0x100000000), 1024,
&start_sector, &sector_count));
TEST_ASSERT_EQUAL_UINT32(8388608, start_sector);
TEST_ASSERT_EQUAL_UINT32(2, sector_count);
TEST_ESP_OK(sdmmc_blockdev_calculate_sectors(512, UINT64_C(0x100000000), 0,
&start_sector, &sector_count));
TEST_ASSERT_EQUAL_UINT32(8388608, start_sector);
TEST_ASSERT_EQUAL_UINT32(0, sector_count);
TEST_ASSERT_EQUAL(ESP_ERR_INVALID_ARG,
sdmmc_blockdev_calculate_sectors(512, 1, 512, NULL, NULL));
TEST_ASSERT_EQUAL(ESP_ERR_INVALID_ARG,
sdmmc_blockdev_calculate_sectors(512, 0, 1, NULL, NULL));
TEST_ASSERT_EQUAL(ESP_ERR_INVALID_ARG,
sdmmc_blockdev_calculate_sectors(0, 0, 512, NULL, NULL));
TEST_ASSERT_EQUAL(ESP_ERR_INVALID_SIZE,
sdmmc_blockdev_calculate_sectors(512, UINT64_MAX - 511, 512, NULL, NULL));
}
TEST_CASE("sdmmc extra, bdl interface test", "[sdcard]")
{
sdmmc_card_t card;