diff --git a/appdirs.py b/appdirs.py index 62a5f88..4a782f7 100644 --- a/appdirs.py +++ b/appdirs.py @@ -483,12 +483,13 @@ def _get_win_folder_with_jna(csidl_name): import array from com.sun import jna from com.sun.jna.platform import win32 - - buf = array.zeros('c', win32.WinDef.MAX_PATH * 2) + + buf_size = win32.WinDef.MAX_PATH * 2 + buf = array.zeros('c', buf_size) shell = win32.Shell32.INSTANCE shell.SHGetFolderPath(None, getattr(win32.ShlObj, csidl_name), None, win32.ShlObj.SHGFP_TYPE_CURRENT, buf) dir = jna.Native.toString(buf.tostring()).rstrip(u"\0") - + # Downgrade to short path name if have highbit chars. See # . has_high_char = False @@ -497,13 +498,13 @@ def _get_win_folder_with_jna(csidl_name): has_high_char = True break if has_high_char: - buf = array.zeros('c', win32.WinDef.MAX_PATH * 2) + buf = array.zeros('c', buf_size) kernel = win32.Kernel32.INSTANCE - if kernal.GetShortPathName(dir, buf, win32.WinDef.MAX_PATH * 2): + if kernal.GetShortPathName(dir, buf, buf_size): dir = jna.Native.toString(buf.tostring()).rstrip(u"\0") - + return dir - + if system == "win32": try: import win32com.shell