Skip to content
Snippets Groups Projects
Commit 5d14e9663093 authored by Ilya Etingof's avatar Ilya Etingof
Browse files

Add minor performance optimising changes

parent dc19e59c48b1
No related branches found
No related tags found
No related merge requests found
......@@ -1443,6 +1443,9 @@
stStop) = [x for x in range(10)]
EOO_SENTINEL = ints2octs((0, 0))
class SingleItemDecoder(object):
defaultErrorState = stErrorCondition
#defaultErrorState = stDumpRawValue
......@@ -1459,7 +1462,6 @@
# Tag & TagSet objects caches
self.__tagCache = {}
self.__tagSetCache = {}
self.__eooSentinel = ints2octs((0, 0))
def __call__(self, substrate, asn1Spec=None,
tagSet=None, length=None, state=stDecodeTag,
......@@ -1480,7 +1482,7 @@
if isinstance(eoo_candidate, SubstrateUnderrunError):
yield eoo_candidate
if eoo_candidate == self.__eooSentinel:
if eoo_candidate == EOO_SENTINEL:
if LOG:
LOG('end-of-octets sentinel found')
yield eoo.endOfOctets
......
......@@ -98,7 +98,10 @@
: :py:class:`~pyasn1.error.PyAsn1Error`
If the supplied substrate cannot be converted to a seekable stream.
"""
if isinstance(substrate, bytes):
if isinstance(substrate, io.BytesIO):
return substrate
elif isinstance(substrate, bytes):
return io.BytesIO(substrate)
elif isinstance(substrate, univ.OctetString):
......@@ -225,7 +228,7 @@
if received is None: # non-blocking stream can do this
yield error.SubstrateUnderrunError(context=context)
elif size != 0 and not received: # end-of-stream
elif not received and size != 0: # end-of-stream
raise error.EndOfStreamError(context=context)
elif len(received) < size:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment