/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/bencode.py

  • Committer: Martin
  • Date: 2018-08-21 00:53:34 UTC
  • mto: This revision was merged to the branch mainline in revision 7074.
  • Revision ID: gzlist@googlemail.com-20180821005334-e1ogxakojyybpwib
Fix recursion check in C bencode implementation

Hard to get Cython to do the right thing but by inverting the
return code can use the standard except handling.

Avoid going through a Python call when encoding, which requires
the encode recursion check to work too.

Adjust tests to use a smaller limit to be more managable.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2007,2009 Canonical Ltd
 
1
# Copyright (C) 2007, 2009 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
16
16
 
17
17
"""Wrapper around the bencode pyrex and python implementation"""
18
18
 
19
 
from bzrlib import osutils
 
19
from __future__ import absolute_import
 
20
 
 
21
from . import osutils
20
22
 
21
23
try:
22
 
    from bzrlib._bencode_pyx import bdecode, bdecode_as_tuple, bencode, Bencached
23
 
except ImportError, e:
 
24
    from ._bencode_pyx import bdecode, bdecode_as_tuple, bencode, Bencached
 
25
except ImportError as e:
24
26
    osutils.failed_to_load_extension(e)
25
 
    from bzrlib.util._bencode_py import bdecode, bdecode_as_tuple, bencode, Bencached
 
27
    from .util._bencode_py import bdecode, bdecode_as_tuple, bencode, Bencached