Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2011-08-07 08:55:58 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-08-07 08:55:58 +0400
commit38280ba38ed48d45e782e989a32b33510432d172 (patch)
tree878876ff555a04c0f3b0c289ec33883cad96b755 /release/scripts/modules/addon_utils.py
parent117ec4a91ac996480611788998645bd6de40d706 (diff)
fix [#28172] Cannot restore Add-ons tab in user preferences after a failed attempt to install an add-on.
non utf8 addons would make the addon UI vanish, now give a message in the console and UI.
Diffstat (limited to 'release/scripts/modules/addon_utils.py')
-rw-r--r--release/scripts/modules/addon_utils.py25
1 files changed, 23 insertions, 2 deletions
diff --git a/release/scripts/modules/addon_utils.py b/release/scripts/modules/addon_utils.py
index 22936f4c209..0c5ef69e805 100644
--- a/release/scripts/modules/addon_utils.py
+++ b/release/scripts/modules/addon_utils.py
@@ -32,6 +32,7 @@ import bpy as _bpy
error_duplicates = False
+error_encoding = False
def paths():
@@ -51,14 +52,18 @@ def paths():
def modules(module_cache):
global error_duplicates
+ global error_encoding
import os
error_duplicates = False
+ error_encoding = False
path_list = paths()
# fake module importing
def fake_module(mod_name, mod_path, speedy=True):
+ global error_encoding
+
if _bpy.app.debug:
print("fake_module", mod_path, mod_name)
import ast
@@ -69,12 +74,28 @@ def modules(module_cache):
line_iter = iter(file_mod)
l = ""
while not l.startswith("bl_info"):
- l = line_iter.readline()
+ try:
+ l = line_iter.readline()
+ except UnicodeDecodeError as e:
+ if not error_encoding:
+ error_encoding = True
+ print("Error reading file as UTF-8:", mod_path, e)
+ file_mod.close()
+ return None
+
if len(l) == 0:
break
while l.rstrip():
lines.append(l)
- l = line_iter.readline()
+ try:
+ l = line_iter.readline()
+ except UnicodeDecodeError as e:
+ if not error_encoding:
+ error_encoding = True
+ print("Error reading file as UTF-8:", mod_path, e)
+ file_mod.close()
+ return None
+
data = "".join(lines)
else: