mirror of
https://github.com/pellepl/spiffs.git
synced 2026-10-25 08:43:43 +00:00
fixes #148
This commit is contained in:
@@ -597,13 +597,13 @@ s32_t SPIFFS_lseek(spiffs *fs, spiffs_file fh, s32_t offs, int whence) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((offs > fileSize)) {
|
if (offs > fileSize) {
|
||||||
fd->fdoffset = fileSize;
|
fd->fdoffset = fileSize;
|
||||||
res = SPIFFS_ERR_END_OF_OBJECT;
|
res = SPIFFS_ERR_END_OF_OBJECT;
|
||||||
}
|
}
|
||||||
SPIFFS_API_CHECK_RES_UNLOCK(fs, res);
|
SPIFFS_API_CHECK_RES_UNLOCK(fs, res);
|
||||||
|
|
||||||
spiffs_span_ix data_spix = offs / SPIFFS_DATA_PAGE_SIZE(fs);
|
spiffs_span_ix data_spix = (offs > 0 ? (offs-1) : 0) / SPIFFS_DATA_PAGE_SIZE(fs);
|
||||||
spiffs_span_ix objix_spix = SPIFFS_OBJ_IX_ENTRY_SPAN_IX(fs, data_spix);
|
spiffs_span_ix objix_spix = SPIFFS_OBJ_IX_ENTRY_SPAN_IX(fs, data_spix);
|
||||||
if (fd->cursor_objix_spix != objix_spix) {
|
if (fd->cursor_objix_spix != objix_spix) {
|
||||||
spiffs_page_ix pix;
|
spiffs_page_ix pix;
|
||||||
|
|||||||
@@ -1160,6 +1160,21 @@ TEST(spiffs_145) {
|
|||||||
} TEST_END
|
} TEST_END
|
||||||
|
|
||||||
|
|
||||||
|
TEST(seek_bug_148) {
|
||||||
|
int res;
|
||||||
|
#define MAGIC_SIZE_THAT_FAILS 26355 // happens to be SPIFFS_DATA_PAGE_SIZE(FS) * SPIFFS_OBJ_HDR_IX_LEN(FS)
|
||||||
|
fs_reset_specific(0, 0, 64*1024, 4096, 4096, 256);
|
||||||
|
u8_t buf[MAGIC_SIZE_THAT_FAILS];
|
||||||
|
spiffs_file fd = SPIFFS_open(FS, "EVENT", SPIFFS_O_CREAT | SPIFFS_O_RDWR, 0);
|
||||||
|
TEST_CHECK_GT(fd, 0);
|
||||||
|
TEST_CHECK_EQ(SPIFFS_write(FS, fd, &buf, sizeof(buf)), sizeof(buf));
|
||||||
|
TEST_CHECK_EQ(SPIFFS_close(FS, fd), SPIFFS_OK);
|
||||||
|
fd = SPIFFS_open(FS, "EVENT", SPIFFS_O_RDONLY, 0);
|
||||||
|
TEST_CHECK_GT(fd, 0);
|
||||||
|
TEST_CHECK_EQ(SPIFFS_lseek(FS, fd, 0, SEEK_END), MAGIC_SIZE_THAT_FAILS);
|
||||||
|
return TEST_RES_OK;
|
||||||
|
} TEST_END
|
||||||
|
|
||||||
|
|
||||||
SUITE_TESTS(bug_tests)
|
SUITE_TESTS(bug_tests)
|
||||||
ADD_TEST(nodemcu_full_fs_1)
|
ADD_TEST(nodemcu_full_fs_1)
|
||||||
@@ -1174,6 +1189,7 @@ SUITE_TESTS(bug_tests)
|
|||||||
ADD_TEST(spiffs_dup_file_74)
|
ADD_TEST(spiffs_dup_file_74)
|
||||||
ADD_TEST(temporal_fd_cache)
|
ADD_TEST(temporal_fd_cache)
|
||||||
ADD_TEST(spiffs_145)
|
ADD_TEST(spiffs_145)
|
||||||
|
ADD_TEST(seek_bug_148)
|
||||||
//ADD_TEST(small_free_space)
|
//ADD_TEST(small_free_space)
|
||||||
ADD_TEST(lots_of_overwrite)
|
ADD_TEST(lots_of_overwrite)
|
||||||
ADD_TEST_NON_DEFAULT(fuzzer_found_1)
|
ADD_TEST_NON_DEFAULT(fuzzer_found_1)
|
||||||
|
|||||||
Reference in New Issue
Block a user