When there's no data to scan in or out, we still use the clock data out
command and fill the buffer with zeroes, so make sure the buffer is
checked for available space.
Change-Id: Ia6005c40c81f7fdb89379f1b5023fe383184d210
Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Reviewed-on: http://openocd.zylin.com/793
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Tested-by: jenkins
Reviewed-by: Freddie Chopin <freddie.chopin@gmail.com>
while (length > 0) {
/* Guarantee buffer space enough for a minimum size transfer */
- if (buffer_write_space(ctx) + (length < 8) < (out ? 4 : 3)
- || (in && buffer_read_space(ctx) < 1))
+ if (buffer_write_space(ctx) + (length < 8) < (out || (!out && !in) ? 4 : 3)
+ || (in && buffer_read_space(ctx) < 1))
retval = mpsse_flush(ctx);
if (length < 8) {
if (this_bytes > 65536)
this_bytes = 65536;
/* Buffer space limit. We already made sure there's space for the minimum
- *transfer. */
- if (out && this_bytes + 3 > buffer_write_space(ctx))
+ * transfer. */
+ if ((out || (!out && !in)) && this_bytes + 3 > buffer_write_space(ctx))
this_bytes = buffer_write_space(ctx) - 3;
if (in && this_bytes > buffer_read_space(ctx))
this_bytes = buffer_read_space(ctx);