summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/common/structec.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/firmware/common/structec.c b/firmware/common/structec.c
index 3f220b0762..fb13eaab51 100644
--- a/firmware/common/structec.c
+++ b/firmware/common/structec.c
@@ -164,8 +164,8 @@ ssize_t ecwrite(int fd, const void *buf, size_t scount,
164 const char *ecinst, bool ec) 164 const char *ecinst, bool ec)
165{ 165{
166 char tmp[MAX_STRUCT_SIZE]; 166 char tmp[MAX_STRUCT_SIZE];
167 size_t member_size = structec_size(ecinst); 167 ssize_t member_size = structec_size(ecinst);
168 168
169 if (ec) 169 if (ec)
170 { 170 {
171 const char *p = (const char *)buf; 171 const char *p = (const char *)buf;
@@ -178,7 +178,11 @@ ssize_t ecwrite(int fd, const void *buf, size_t scount,
178 178
179 memcpy(tmp, p, member_size * amount); 179 memcpy(tmp, p, member_size * amount);
180 structec_convert(tmp, ecinst, amount, true); 180 structec_convert(tmp, ecinst, amount, true);
181 write(fd, tmp, amount * member_size); 181 ssize_t ret = write(fd, tmp, amount * member_size);
182
183 if(ret != amount * member_size)
184 return ret;
185
182 p += member_size * amount; 186 p += member_size * amount;
183 } 187 }
184 188