From a2703649ea4455fe11388e24fad68a66441daf68 Mon Sep 17 00:00:00 2001
From: Andrew Leech <andrew.leech@planetinnovation.com.au>
Date: Wed, 12 Sep 2018 16:42:06 +1000
Subject: [PATCH] tools/pydfu: Workaround stdio flush error on Windows with
 Python 3.6.

There appears to be an issue on Windows with CPython >= 3.6,
sys.stdout.flush() raises an exception:

    OSError: [WinError 87] The parameter is incorrect

It works fine to just catch and ignore the error on the flush line.  Tested
on Windows 10 x64 1803 (Build 17134.228), Python 3.6.4 amd64.
---
 tools/pydfu.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/tools/pydfu.py b/tools/pydfu.py
index c6b6802c8..e7f4ab178 100755
--- a/tools/pydfu.py
+++ b/tools/pydfu.py
@@ -482,7 +482,10 @@ def cli_progress(addr, offset, size):
     print("\r0x{:08x} {:7d} [{}{}] {:3d}% "
           .format(addr, size, '=' * done, ' ' * (width - done),
                   offset * 100 // size), end="")
-    sys.stdout.flush()
+    try:
+        sys.stdout.flush()
+    except OSError:
+        pass # Ignore Windows CLI "WinError 87" on Python 3.6
     if offset == size:
         print("")
 
-- 
GitLab