[jsinterp] Fix undefined variable name caching (#13677)

Fix b342d27f3f

Authored by: bashonly
pull/13678/head
bashonly 2 weeks ago committed by GitHub
parent aa9f1f4d57
commit 805519bfaa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -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()

@ -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',
),
]

@ -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

Loading…
Cancel
Save