diff --git a/PyPDF2/generic/_base.py b/PyPDF2/generic/_base.py index b968ef2bb..0da89bc8c 100644 --- a/PyPDF2/generic/_base.py +++ b/PyPDF2/generic/_base.py @@ -422,10 +422,10 @@ def writeToStream( @staticmethod def unnumber(sin: str) -> str: - i = sin.find("#") + i = sin.find("#", 0) while i >= 0: sin = sin[:i] + chr(int(sin[i + 1 : i + 3], 16)) + sin[i + 3 :] - i = sin.find("#") + i = sin.find("#", i + 1) return sin @staticmethod diff --git a/tests/test_generic.py b/tests/test_generic.py index d0798c5f6..deff2ddab 100644 --- a/tests/test_generic.py +++ b/tests/test_generic.py @@ -186,6 +186,12 @@ def test_NameObject(): == "/paired()parentheses" ) assert NameObject.read_from_stream(BytesIO(b"/A#42"), None) == "/AB" + assert ( + NameObject.read_from_stream( + BytesIO(b"/#f1j#d4#aa#0c#ce#87#b4#b3#b0#23J#86#fe#2a#b2jYJ#94"), None + ) + == "/ñjÔª\x0cÎ\x87´³°#J\x86þ*²jYJ\x94" + ) def test_destination_fit_r():