diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 0d745db06a..327993175c 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -10,6 +10,9 @@ Next release https://github.com/aboutcode-org/scancode-toolkit/pull/4474 https://github.com/aboutcode-org/scancode-toolkit/issues/4101 +- Fix: Prevent crash when parent resource is missing in Cargo package assembler. Thanks [@Iron-56](https://github.com/Iron-56)! + https://github.com/nexB/scancode-toolkit/issues/1436 + v32.4.1 - 2025-07-23 -------------------- diff --git a/src/packagedcode/cargo.py b/src/packagedcode/cargo.py index 3a0533d8f9..a7c8fddc8f 100644 --- a/src/packagedcode/cargo.py +++ b/src/packagedcode/cargo.py @@ -59,7 +59,8 @@ def assemble(cls, package_data, resource, codebase, package_adder): package_data.extra_data[attribute] = 'workspace' workspace_package_data[attribute] = getattr(package_data, attribute) - workspace_root_path = resource.parent(codebase).path + parent = resource.parent(codebase) + workspace_root_path = parent.path if parent else None if workspace_package_data and workspace_members: # TODO: support glob patterns found in cargo workspaces @@ -97,7 +98,7 @@ def assemble(cls, package_data, resource, codebase, package_adder): else: yield from cls.assemble_from_many_datafiles( datafile_name_patterns=('Cargo.toml', 'cargo.toml', 'Cargo.lock', 'cargo.lock'), - directory=resource.parent(codebase), + directory=resource.parent(codebase) or resource, codebase=codebase, package_adder=package_adder, )