From 58209677583aa451f5156c672a8abb677d1c313a Mon Sep 17 00:00:00 2001 From: Hay1tsme Date: Tue, 7 Oct 2025 04:00:57 -0400 Subject: [PATCH] fix dangling refid creation --- bemani/backend/bst/beatstream2.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/bemani/backend/bst/beatstream2.py b/bemani/backend/bst/beatstream2.py index fdd0c77..4ea2211 100644 --- a/bemani/backend/bst/beatstream2.py +++ b/bemani/backend/bst/beatstream2.py @@ -588,11 +588,18 @@ class Beatstream2(EventLogHandler, BSTBase): # Called when a player registeres a new profile when they have an account def handle_player2_succeed_request(self, request: Node) -> Node: + player2 = Node.void('player2') userid = self.data.local.user.from_refid(self.game, self.version, request.child_value('rid')) profile = self.data.local.user.get_profile(self.game, self.version - 1, userid) - scores = self.data.local.music.get_scores(self.game, self.version - 1, userid) - achievements = self.data.local.user.get_achievements(self.game, self.version - 1, userid) - player2 = Node.void('player2') + + if profile is not None: + # We need to check for profile existance before we look up achievements for the previous + # version, otherwise we will create a dangling refid + scores = self.data.local.music.get_scores(self.game, self.version - 1, userid) + achievements = self.data.local.user.get_achievements(self.game, self.version - 1, userid) + else: + scores = [] + achievements = [] play = Node.bool('play', profile.get_int('tpc') > 1 if profile else False) player2.add_child(play)