From 345f57ccb8e2df9bd5ea45cbdd2b68e0f4e18d55 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Sat, 4 Aug 2018 11:28:46 +0100 Subject: [PATCH] Fix bug in optimization of wxExpandEnvVars. Fixes: lp:1785228 * https://bugs.launchpad.net/kicad/+bug/1785228 --- common/common.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/common/common.cpp b/common/common.cpp index 2a69ee7902..3c8e9dfd97 100644 --- a/common/common.cpp +++ b/common/common.cpp @@ -277,7 +277,7 @@ wxString KIwxExpandEnvVars(const wxString& str) switch ( str_n.GetValue() ) { #ifdef __WINDOWS__ - case wxT('%'): + case wxT('%'): #endif // __WINDOWS__ case wxT('$'): { @@ -294,12 +294,12 @@ wxString KIwxExpandEnvVars(const wxString& str) switch ( str[n + 1].GetValue() ) { case wxT('('): bracket = Bracket_Normal; - n++; // skip the bracket + str_n = str[++n]; // skip the bracket break; case wxT('{'): bracket = Bracket_Curly; - n++; // skip the bracket + str_n = str[++n]; // skip the bracket break; default: @@ -362,13 +362,15 @@ wxString KIwxExpandEnvVars(const wxString& str) } n = m - 1; // skip variable name + str_n = str[n]; } break; case wxT('\\'): // backslash can be used to suppress special meaning of % and $ if ( n != strlen - 1 && (str[n + 1] == wxT('%') || str[n + 1] == wxT('$')) ) { - strResult += str[++n]; + str_n = str[++n]; + strResult += str_n; break; }