From 2f3879724b1bef9ddf5fcdc1ef0bda8ccd4058a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojt=C4=9Bch=20Bo=C4=8Dek?= Date: Mon, 16 Mar 2020 22:44:40 +0100 Subject: [PATCH] Esp32ExceptionDecoder: fix crash on Windows with Python <3;3.7> (#303) --- monitor/filter_exception_decoder.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/monitor/filter_exception_decoder.py b/monitor/filter_exception_decoder.py index 9ea42c8..38fcde4 100644 --- a/monitor/filter_exception_decoder.py +++ b/monitor/filter_exception_decoder.py @@ -17,7 +17,7 @@ import re import subprocess import sys -from platformio.compat import get_filesystem_encoding, path_to_unicode +from platformio.compat import path_to_unicode, WINDOWS, PY2 from platformio.project.exception import PlatformioException from platformio.project.helpers import load_project_ide_data from platformio.commands.device import DeviceMonitorFilter @@ -109,13 +109,16 @@ See https://docs.platformio.org/page/projectconf/build_configurations.html def get_backtrace(self, match): trace = "" - enc = get_filesystem_encoding() - args = (self.addr2line_path, "-fipC", "-e", self.firmware_path) - args = [a.encode(enc) for a in args] + enc = "mbcs" if WINDOWS else "utf-8" + args = [self.addr2line_path, u"-fipC", u"-e", self.firmware_path] + if PY2: + args = [a.encode(enc) for a in args] try: for i, addr in enumerate(match.group(1).split()): + if PY2: + addr = addr.encode(enc) output = ( - subprocess.check_output(args + [addr.encode(enc)]) + subprocess.check_output(args + [addr]) .decode(enc) .strip() )