Fix python error when trying to delete presets
authorSebastian Parborg <darkdefende@gmail.com>
Fri, 1 Nov 2019 16:48:57 +0000 (17:48 +0100)
committerSebastian Parborg <darkdefende@gmail.com>
Fri, 1 Nov 2019 16:58:29 +0000 (17:58 +0100)
In some cases the default data paths for blender does not exist.
For example on windows when using the portable install.

This would lead to errors when trying to lookup default paths in
is_path_builtin. Now we handle cases like this gracefully.

release/scripts/modules/bpy/utils/__init__.py

index 74cc54bb5442fd4ada047a09482a53bb6186d87c..abe33b0e8ea19c6403a6ff109ba853fa9a67e883 100644 (file)
@@ -469,7 +469,6 @@ def is_path_builtin(path):
     # it's intended to be used to check if it's OK to remove presets.
     #
     # If this is used in a draw-loop for example, we could cache some of the values.
-    search_path = _os.path.abspath(path)
     user_path = resource_path('USER')
 
     for res in ('SYSTEM', 'LOCAL'):
@@ -480,11 +479,15 @@ def is_path_builtin(path):
             # This can happen on portable installs.
             continue
 
-        if _os.path.samefile(
-                _os.path.commonpath([parent_path]),
-                _os.path.commonpath([parent_path, path])
-        ):
-            return True
+        try:
+            if _os.path.samefile(
+                    _os.path.commonpath([parent_path]),
+                    _os.path.commonpath([parent_path, path])
+            ):
+                return True
+        except FileNotFoundError:
+            #The path we tried to look up doesn't exist
+            pass
 
     return False