mirror of
				https://github.com/eledio-devices/thirdparty-littlefs.git
				synced 2025-10-31 16:14:16 +01:00 
			
		
		
		
	lfs_file_truncate: ensure lfs_file_seek return code is lsf_soff_t and cast error returns
To ensure 16 bit devices do not invalidly truncate lfs_file_write return codes, change the return variable to be lfs_ssize_t which is the lfs_file_write return code and cast to int if it is a negative error code.
This commit is contained in:
		
							
								
								
									
										18
									
								
								lfs.c
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								lfs.c
									
									
									
									
									
								
							| @@ -3006,10 +3006,10 @@ int lfs_file_truncate(lfs_t *lfs, lfs_file_t *file, lfs_off_t size) { | |||||||
|     } else if (size > oldsize) { |     } else if (size > oldsize) { | ||||||
|         // flush+seek if not already at end |         // flush+seek if not already at end | ||||||
|         if (file->pos != oldsize) { |         if (file->pos != oldsize) { | ||||||
|             int err = lfs_file_seek(lfs, file, 0, LFS_SEEK_END); |             lfs_soff_t res = lfs_file_seek(lfs, file, 0, LFS_SEEK_END); | ||||||
|             if (err < 0) { |             if (res < 0) { | ||||||
|                 LFS_TRACE("lfs_file_truncate -> %d", err); |                 LFS_TRACE("lfs_file_truncate -> %d", res); | ||||||
|                 return err; |                 return (int)res; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -3018,16 +3018,16 @@ int lfs_file_truncate(lfs_t *lfs, lfs_file_t *file, lfs_off_t size) { | |||||||
|             lfs_ssize_t res = lfs_file_write(lfs, file, &(uint8_t){0}, 1); |             lfs_ssize_t res = lfs_file_write(lfs, file, &(uint8_t){0}, 1); | ||||||
|             if (res < 0) { |             if (res < 0) { | ||||||
|                 LFS_TRACE("lfs_file_truncate -> %d", res); |                 LFS_TRACE("lfs_file_truncate -> %d", res); | ||||||
|                 return res; |                 return (int)res; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     // restore pos |     // restore pos | ||||||
|     int err = lfs_file_seek(lfs, file, pos, LFS_SEEK_SET); |     lfs_soff_t res = lfs_file_seek(lfs, file, pos, LFS_SEEK_SET); | ||||||
|     if (err < 0) { |     if (res < 0) { | ||||||
|       LFS_TRACE("lfs_file_truncate -> %d", err); |       LFS_TRACE("lfs_file_truncate -> %d", res); | ||||||
|       return err; |       return (int)res; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     LFS_TRACE("lfs_file_truncate -> %d", 0); |     LFS_TRACE("lfs_file_truncate -> %d", 0); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user