diff --git a/test/test_jsinterp.py b/test/test_jsinterp.py index a1088cea49..43b1d0fdee 100644 --- a/test/test_jsinterp.py +++ b/test/test_jsinterp.py @@ -536,6 +536,11 @@ class TestJSInterpreter(unittest.TestCase): } ''', 31) + def test_undefined_varnames(self): + jsi = JSInterpreter('function f(){ var a; return [a, b]; }') + self._test(jsi, [JS_Undefined, JS_Undefined]) + self.assertEqual(jsi._undefined_varnames, {'b'}) + if __name__ == '__main__': unittest.main() diff --git a/test/test_youtube_signature.py b/test/test_youtube_signature.py index 98607df55e..4562467534 100644 --- a/test/test_youtube_signature.py +++ b/test/test_youtube_signature.py @@ -373,6 +373,10 @@ _NSIG_TESTS = [ 'https://www.youtube.com/s/player/e12fbea4/player_ias_tce.vflset/en_US/base.js', 'kM5r52fugSZRAKHfo3', 'XkeRfXIPOkSwfg', ), + ( + 'https://www.youtube.com/s/player/ef259203/player_ias_tce.vflset/en_US/base.js', + 'rPqBC01nJpqhhi2iA2U', 'hY7dbiKFT51UIA', + ), ] diff --git a/yt_dlp/jsinterp.py b/yt_dlp/jsinterp.py index f06d96832f..460bc2c03e 100644 --- a/yt_dlp/jsinterp.py +++ b/yt_dlp/jsinterp.py @@ -677,8 +677,9 @@ class JSInterpreter: # Set value as JS_Undefined or its pre-existing value local_vars.set_local(var, ret) else: - ret = local_vars.get(var, JS_Undefined) - if ret is JS_Undefined: + ret = local_vars.get(var, NO_DEFAULT) + if ret is NO_DEFAULT: + ret = JS_Undefined self._undefined_varnames.add(var) return ret, should_return