# HG changeset patch # User Marcin Kuzminski # Date 2018-04-10 15:46:15 # Node ID 44d560deeeea528e81959ef158b0c9f40b594214 # Parent c2a00a0d51e21669329cf64d3eebd45990f87e84 diffs: don't use recurred diffset attachment in diffs. This makes this structure much harder to garbage collect since it was before infinitly recursed. diff --git a/rhodecode/lib/codeblocks.py b/rhodecode/lib/codeblocks.py --- a/rhodecode/lib/codeblocks.py +++ b/rhodecode/lib/codeblocks.py @@ -28,7 +28,7 @@ from pygments.lexers.special import Text from rhodecode.lib.helpers import ( get_lexer_for_filenode, html_escape, get_custom_lexer) -from rhodecode.lib.utils2 import AttributeDict +from rhodecode.lib.utils2 import AttributeDict, StrictAttributeDict from rhodecode.lib.vcs.nodes import FileNode from rhodecode.lib.diff_match_patch import diff_match_patch from rhodecode.lib.diffs import LimitedDiffContainer @@ -400,7 +400,12 @@ class DiffSet(object): for patch in patchset: diffset.file_stats[patch['filename']] = patch['stats'] filediff = self.render_patch(patch) - filediff.diffset = diffset + filediff.diffset = StrictAttributeDict(dict( + source_ref=diffset.source_ref, + target_ref=diffset.target_ref, + repo_name=diffset.repo_name, + source_repo_name=diffset.source_repo_name, + )) diffset.files.append(filediff) diffset.changed_files += 1 if not patch['stats']['binary']: