mirror of
				https://github.com/eledio-devices/thirdparty-littlefs.git
				synced 2025-10-31 08:42:40 +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 | ||||
|     lfs_off_t pos = file->pos; | ||||
|  | ||||
|     if (whence == LFS_SEEK_SET) { | ||||
|         file->pos = off; | ||||
|     } 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; | ||||
|     } | ||||
|  | ||||
|     return pos; | ||||
|     return file->pos; | ||||
| } | ||||
|  | ||||
| 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; | ||||
|     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; | ||||
|     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; | ||||
|     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; | ||||
|     memcmp(buffer, "kittycatcat", size) => 0; | ||||
|  | ||||
| @@ -174,15 +174,15 @@ tests/test.py << TEST | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     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; | ||||
|     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; | ||||
|     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; | ||||
|     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_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; | ||||
|     memcmp(buffer, "doggodogdog", size) => 0; | ||||
|  | ||||
| @@ -219,11 +219,11 @@ tests/test.py << TEST | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     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; | ||||
|     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; | ||||
|     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_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; | ||||
|     memcmp(buffer, "doggodogdog", size) => 0; | ||||
|  | ||||
| @@ -262,11 +262,11 @@ tests/test.py << TEST | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     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; | ||||
|     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; | ||||
|     memcmp(buffer, "kittycatcat", size) => 0; | ||||
|  | ||||
| @@ -288,13 +288,13 @@ tests/test.py << TEST | ||||
|     for (int i = 0; i < sizeof(offsets) / sizeof(offsets[0]); i++) { | ||||
|         lfs_soff_t off = offsets[i]; | ||||
|         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_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; | ||||
|         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; | ||||
|         memcmp(buffer, "kittycatcat", size) => 0; | ||||
|  | ||||
| @@ -312,31 +312,29 @@ tests/test.py << TEST | ||||
|  | ||||
|     size = strlen("kittycatcat"); | ||||
|     lfs_file_size(&lfs, &file[0]) => $LARGESIZE*size; | ||||
|     lfs_file_seek(&lfs, &file[0], | ||||
|             ($LARGESIZE+$SMALLSIZE)*size, LFS_SEEK_SET) => 0; | ||||
|     lfs_file_seek(&lfs, &file[0], ($LARGESIZE+$SMALLSIZE)*size, | ||||
|             LFS_SEEK_SET) => ($LARGESIZE+$SMALLSIZE)*size; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => 0; | ||||
|  | ||||
|     memcpy(buffer, "porcupineee", size); | ||||
|     lfs_file_write(&lfs, &file[0], buffer, size) => size; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], | ||||
|             ($LARGESIZE+$SMALLSIZE)*size, LFS_SEEK_SET) => | ||||
|             ($LARGESIZE+$SMALLSIZE+1)*size; | ||||
|     lfs_file_seek(&lfs, &file[0], ($LARGESIZE+$SMALLSIZE)*size, | ||||
|             LFS_SEEK_SET) => ($LARGESIZE+$SMALLSIZE)*size; | ||||
|     lfs_file_read(&lfs, &file[0], buffer, size) => size; | ||||
|     memcmp(buffer, "porcupineee", size) => 0; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], | ||||
|             $LARGESIZE*size, LFS_SEEK_SET) => | ||||
|             ($LARGESIZE+$SMALLSIZE+1)*size; | ||||
|     lfs_file_seek(&lfs, &file[0], $LARGESIZE*size, | ||||
|             LFS_SEEK_SET) => $LARGESIZE*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; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], | ||||
|             -(($LARGESIZE+$SMALLSIZE)*size), LFS_SEEK_CUR) => LFS_ERR_INVAL; | ||||
|     lfs_file_seek(&lfs, &file[0], -(($LARGESIZE+$SMALLSIZE)*size), | ||||
|             LFS_SEEK_CUR) => LFS_ERR_INVAL; | ||||
|     lfs_file_tell(&lfs, &file[0]) => ($LARGESIZE+1)*size; | ||||
|  | ||||
|     lfs_file_seek(&lfs, &file[0], | ||||
|             -(($LARGESIZE+2*$SMALLSIZE)*size), LFS_SEEK_END) => LFS_ERR_INVAL; | ||||
|     lfs_file_seek(&lfs, &file[0], -(($LARGESIZE+2*$SMALLSIZE)*size), | ||||
|             LFS_SEEK_END) => LFS_ERR_INVAL; | ||||
|     lfs_file_tell(&lfs, &file[0]) => ($LARGESIZE+1)*size; | ||||
|  | ||||
|     lfs_file_close(&lfs, &file[0]) => 0; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user