diff options
author | Sean McGivern <sean@gitlab.com> | 2019-08-01 09:42:28 +0000 |
---|---|---|
committer | Sean McGivern <sean@gitlab.com> | 2019-08-01 09:42:28 +0000 |
commit | 3186a3bfe31455ab0f0228aac3cc94ef2467f933 (patch) | |
tree | 9c4053f91fbd60400964b3f26936669c6f5c695a /lib | |
parent | 011093ce68f672c77735026a18dd96a9e2f8f106 (diff) | |
parent | 7a5c4cd0ca692e2fac0d648726b71dcd304602ec (diff) | |
download | gitlab-ce-3186a3bfe31455ab0f0228aac3cc94ef2467f933.tar.gz |
Merge branch 'sh-fix-infite-loop-peek-bar' into 'master'
Fix SystemStackError when Peek bar is active with Rugged calls
Closes #65404
See merge request gitlab-org/gitlab-ce!31357
Diffstat (limited to 'lib')
-rw-r--r-- | lib/peek/views/rugged.rb | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/peek/views/rugged.rb b/lib/peek/views/rugged.rb index 6b9d3e7b1a3..18b3f422852 100644 --- a/lib/peek/views/rugged.rb +++ b/lib/peek/views/rugged.rb @@ -29,8 +29,12 @@ module Peek def format_args(args) args.map do |arg| - # Needed to avoid infinite as_json calls - if arg.is_a?(Gitlab::Git::Repository) + # ActiveSupport::JSON recursively calls as_json on all + # instance variables, and if that instance variable points to + # something that refers back to the same instance, we can wind + # up in an infinite loop. Currently this only seems to happen with + # Gitlab::Git::Repository and ::Repository. + if arg.instance_variables.present? arg.to_s else arg |