mirror of
				https://github.com/eledio-devices/thirdparty-littlefs.git
				synced 2025-10-31 16:14:16 +01:00 
			
		
		
		
	Fixed incorrect return value from lfs_file_seek
lfs_file_seek returned the _previous_ file offset on success, where most standards return the _calculated_ offset on success. This just falls into me not noticing a mistake, and shows why it's always helpful to have a second set of eyes on code.
This commit is contained in:
		
							
								
								
									
										4
									
								
								lfs.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								lfs.c
									
									
									
									
									
								
							| @@ -1522,8 +1522,6 @@ lfs_soff_t lfs_file_seek(lfs_t *lfs, lfs_file_t *file, | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     // update pos |     // update pos | ||||||
|     lfs_off_t pos = file->pos; |  | ||||||
|  |  | ||||||
|     if (whence == LFS_SEEK_SET) { |     if (whence == LFS_SEEK_SET) { | ||||||
|         file->pos = off; |         file->pos = off; | ||||||
|     } else if (whence == LFS_SEEK_CUR) { |     } else if (whence == LFS_SEEK_CUR) { | ||||||
| @@ -1540,7 +1538,7 @@ lfs_soff_t lfs_file_seek(lfs_t *lfs, lfs_file_t *file, | |||||||
|         file->pos = file->size + off; |         file->pos = file->size + off; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     return pos; |     return file->pos; | ||||||
| } | } | ||||||
|  |  | ||||||
| lfs_soff_t lfs_file_tell(lfs_t *lfs, lfs_file_t *file) { | lfs_soff_t lfs_file_tell(lfs_t *lfs, lfs_file_t *file) { | ||||||
|   | |||||||
| @@ -133,15 +133,15 @@ tests/test.py << TEST | |||||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; |     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||||
|     memcmp(buffer, "kittycatcat", size) => 0; |     memcmp(buffer, "kittycatcat", size) => 0; | ||||||
|  |  | ||||||
|     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => size; |     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos; | ||||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; |     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||||
|     memcmp(buffer, "kittycatcat", size) => 0; |     memcmp(buffer, "kittycatcat", size) => 0; | ||||||
|  |  | ||||||
|     lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_CUR) => pos+size; |     lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_CUR) => pos; | ||||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; |     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||||
|     memcmp(buffer, "kittycatcat", size) => 0; |     memcmp(buffer, "kittycatcat", size) => 0; | ||||||
|  |  | ||||||
|     lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_END) => pos+size; |     lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_END) >= 0 => 1; | ||||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; |     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||||
|     memcmp(buffer, "kittycatcat", size) => 0; |     memcmp(buffer, "kittycatcat", size) => 0; | ||||||
|  |  | ||||||
| @@ -174,15 +174,15 @@ tests/test.py << TEST | |||||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; |     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||||
|     memcmp(buffer, "kittycatcat", size) => 0; |     memcmp(buffer, "kittycatcat", size) => 0; | ||||||
|  |  | ||||||
|     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => size; |     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos; | ||||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; |     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||||
|     memcmp(buffer, "kittycatcat", size) => 0; |     memcmp(buffer, "kittycatcat", size) => 0; | ||||||
|  |  | ||||||
|     lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_CUR) => pos+size; |     lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_CUR) => pos; | ||||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; |     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||||
|     memcmp(buffer, "kittycatcat", size) => 0; |     memcmp(buffer, "kittycatcat", size) => 0; | ||||||
|  |  | ||||||
|     lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_END) => pos+size; |     lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_END) >= 0 => 1; | ||||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; |     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||||
|     memcmp(buffer, "kittycatcat", size) => 0; |     memcmp(buffer, "kittycatcat", size) => 0; | ||||||
|  |  | ||||||
| @@ -211,7 +211,7 @@ tests/test.py << TEST | |||||||
|     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos; |     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos; | ||||||
|     lfs_file_write(&lfs, &file[0], buffer, size) => size; |     lfs_file_write(&lfs, &file[0], buffer, size) => size; | ||||||
|  |  | ||||||
|     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos+size; |     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos; | ||||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; |     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||||
|     memcmp(buffer, "doggodogdog", size) => 0; |     memcmp(buffer, "doggodogdog", size) => 0; | ||||||
|  |  | ||||||
| @@ -219,11 +219,11 @@ tests/test.py << TEST | |||||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; |     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||||
|     memcmp(buffer, "kittycatcat", size) => 0; |     memcmp(buffer, "kittycatcat", size) => 0; | ||||||
|  |  | ||||||
|     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => size; |     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos; | ||||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; |     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||||
|     memcmp(buffer, "doggodogdog", size) => 0; |     memcmp(buffer, "doggodogdog", size) => 0; | ||||||
|  |  | ||||||
|     lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_END) => pos+size; |     lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_END) >= 0 => 1; | ||||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; |     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||||
|     memcmp(buffer, "kittycatcat", size) => 0; |     memcmp(buffer, "kittycatcat", size) => 0; | ||||||
|  |  | ||||||
| @@ -254,7 +254,7 @@ tests/test.py << TEST | |||||||
|     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos; |     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos; | ||||||
|     lfs_file_write(&lfs, &file[0], buffer, size) => size; |     lfs_file_write(&lfs, &file[0], buffer, size) => size; | ||||||
|  |  | ||||||
|     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos+size; |     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos; | ||||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; |     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||||
|     memcmp(buffer, "doggodogdog", size) => 0; |     memcmp(buffer, "doggodogdog", size) => 0; | ||||||
|  |  | ||||||
| @@ -262,11 +262,11 @@ tests/test.py << TEST | |||||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; |     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||||
|     memcmp(buffer, "kittycatcat", size) => 0; |     memcmp(buffer, "kittycatcat", size) => 0; | ||||||
|  |  | ||||||
|     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => size; |     lfs_file_seek(&lfs, &file[0], pos, LFS_SEEK_SET) => pos; | ||||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; |     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||||
|     memcmp(buffer, "doggodogdog", size) => 0; |     memcmp(buffer, "doggodogdog", size) => 0; | ||||||
|  |  | ||||||
|     lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_END) => pos+size; |     lfs_file_seek(&lfs, &file[0], -size, LFS_SEEK_END) >= 0 => 1; | ||||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; |     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||||
|     memcmp(buffer, "kittycatcat", size) => 0; |     memcmp(buffer, "kittycatcat", size) => 0; | ||||||
|  |  | ||||||
| @@ -288,13 +288,13 @@ tests/test.py << TEST | |||||||
|     for (int i = 0; i < sizeof(offsets) / sizeof(offsets[0]); i++) { |     for (int i = 0; i < sizeof(offsets) / sizeof(offsets[0]); i++) { | ||||||
|         lfs_soff_t off = offsets[i]; |         lfs_soff_t off = offsets[i]; | ||||||
|         memcpy(buffer, "hedgehoghog", size); |         memcpy(buffer, "hedgehoghog", size); | ||||||
|         lfs_file_seek(&lfs, &file[0], off, LFS_SEEK_SET) >= 0 => 1; |         lfs_file_seek(&lfs, &file[0], off, LFS_SEEK_SET) => off; | ||||||
|         lfs_file_write(&lfs, &file[0], buffer, size) => size; |         lfs_file_write(&lfs, &file[0], buffer, size) => size; | ||||||
|         lfs_file_seek(&lfs, &file[0], off, LFS_SEEK_SET) => off+size; |         lfs_file_seek(&lfs, &file[0], off, LFS_SEEK_SET) => off; | ||||||
|         lfs_file_read(&lfs, &file[0], buffer, size) => size; |         lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||||
|         memcmp(buffer, "hedgehoghog", size) => 0; |         memcmp(buffer, "hedgehoghog", size) => 0; | ||||||
|  |  | ||||||
|         lfs_file_seek(&lfs, &file[0], 0, LFS_SEEK_SET) => off+size; |         lfs_file_seek(&lfs, &file[0], 0, LFS_SEEK_SET) => 0; | ||||||
|         lfs_file_read(&lfs, &file[0], buffer, size) => size; |         lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||||
|         memcmp(buffer, "kittycatcat", size) => 0; |         memcmp(buffer, "kittycatcat", size) => 0; | ||||||
|  |  | ||||||
| @@ -312,31 +312,29 @@ tests/test.py << TEST | |||||||
|  |  | ||||||
|     size = strlen("kittycatcat"); |     size = strlen("kittycatcat"); | ||||||
|     lfs_file_size(&lfs, &file[0]) => $LARGESIZE*size; |     lfs_file_size(&lfs, &file[0]) => $LARGESIZE*size; | ||||||
|     lfs_file_seek(&lfs, &file[0], |     lfs_file_seek(&lfs, &file[0], ($LARGESIZE+$SMALLSIZE)*size, | ||||||
|             ($LARGESIZE+$SMALLSIZE)*size, LFS_SEEK_SET) => 0; |             LFS_SEEK_SET) => ($LARGESIZE+$SMALLSIZE)*size; | ||||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => 0; |     lfs_file_read(&lfs, &file[0], buffer, size) => 0; | ||||||
|  |  | ||||||
|     memcpy(buffer, "porcupineee", size); |     memcpy(buffer, "porcupineee", size); | ||||||
|     lfs_file_write(&lfs, &file[0], buffer, size) => size; |     lfs_file_write(&lfs, &file[0], buffer, size) => size; | ||||||
|  |  | ||||||
|     lfs_file_seek(&lfs, &file[0], |     lfs_file_seek(&lfs, &file[0], ($LARGESIZE+$SMALLSIZE)*size, | ||||||
|             ($LARGESIZE+$SMALLSIZE)*size, LFS_SEEK_SET) => |             LFS_SEEK_SET) => ($LARGESIZE+$SMALLSIZE)*size; | ||||||
|             ($LARGESIZE+$SMALLSIZE+1)*size; |  | ||||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; |     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||||
|     memcmp(buffer, "porcupineee", size) => 0; |     memcmp(buffer, "porcupineee", size) => 0; | ||||||
|  |  | ||||||
|     lfs_file_seek(&lfs, &file[0], |     lfs_file_seek(&lfs, &file[0], $LARGESIZE*size, | ||||||
|             $LARGESIZE*size, LFS_SEEK_SET) => |             LFS_SEEK_SET) => $LARGESIZE*size; | ||||||
|             ($LARGESIZE+$SMALLSIZE+1)*size; |  | ||||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; |     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||||
|     memcmp(buffer, "\0\0\0\0\0\0\0\0\0\0\0", size) => 0; |     memcmp(buffer, "\0\0\0\0\0\0\0\0\0\0\0", size) => 0; | ||||||
|  |  | ||||||
|     lfs_file_seek(&lfs, &file[0], |     lfs_file_seek(&lfs, &file[0], -(($LARGESIZE+$SMALLSIZE)*size), | ||||||
|             -(($LARGESIZE+$SMALLSIZE)*size), LFS_SEEK_CUR) => LFS_ERR_INVAL; |             LFS_SEEK_CUR) => LFS_ERR_INVAL; | ||||||
|     lfs_file_tell(&lfs, &file[0]) => ($LARGESIZE+1)*size; |     lfs_file_tell(&lfs, &file[0]) => ($LARGESIZE+1)*size; | ||||||
|  |  | ||||||
|     lfs_file_seek(&lfs, &file[0], |     lfs_file_seek(&lfs, &file[0], -(($LARGESIZE+2*$SMALLSIZE)*size), | ||||||
|             -(($LARGESIZE+2*$SMALLSIZE)*size), LFS_SEEK_END) => LFS_ERR_INVAL; |             LFS_SEEK_END) => LFS_ERR_INVAL; | ||||||
|     lfs_file_tell(&lfs, &file[0]) => ($LARGESIZE+1)*size; |     lfs_file_tell(&lfs, &file[0]) => ($LARGESIZE+1)*size; | ||||||
|  |  | ||||||
|     lfs_file_close(&lfs, &file[0]) => 0; |     lfs_file_close(&lfs, &file[0]) => 0; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user