diff options
author | Nicolas Pitre <nico@fluxnic.net> | 2010-02-02 00:05:42 -0500 |
---|---|---|
committer | Nicolas Pitre <nico@fluxnic.net> | 2010-02-02 00:05:42 -0500 |
commit | 3d2d5dcc9c27b84dc2e5e9ed53be0f784a450042 (patch) | |
tree | 20690f57d938cca04ec41a0125747cc69b6a110c /src | |
parent | bef37ceba2bde6a34d003762bced007bed894bc7 (diff) | |
download | openocd+libswd-3d2d5dcc9c27b84dc2e5e9ed53be0f784a450042.tar.gz openocd+libswd-3d2d5dcc9c27b84dc2e5e9ed53be0f784a450042.tar.bz2 openocd+libswd-3d2d5dcc9c27b84dc2e5e9ed53be0f784a450042.tar.xz openocd+libswd-3d2d5dcc9c27b84dc2e5e9ed53be0f784a450042.zip |
ARM semihosting: fix EOF handling with SYS_READ
The semihosting interface has a strange convention for read/write where
the unused amount of buffer must be returned. We failed to return the
total buffer size when the local read() call returned 0.
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/target/arm_semihosting.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/target/arm_semihosting.c b/src/target/arm_semihosting.c index c41c5a00..9b853d9f 100644 --- a/src/target/arm_semihosting.c +++ b/src/target/arm_semihosting.c @@ -190,7 +190,7 @@ static int do_semihosting(struct target *target) } else { result = read(fd, buf, l); armv4_5->semihosting_errno = errno; - if (result > 0) { + if (result >= 0) { retval = target_write_buffer(target, a, result, buf); if (retval != ERROR_OK) { free(buf); |