[Xapian-tickets] [Xapian] #703: Python 3 sortable_serialise() broken on 32 bit

Xapian nobody at xapian.org
Wed Jan 6 16:10:37 GMT 2016


#703: Python 3 sortable_serialise() broken on 32 bit
---------------------------+------------------
        Reporter:  barry   |      Owner:  olly
            Type:  defect  |     Status:  new
        Priority:  normal  |  Milestone:
       Component:  Other   |    Version:
        Severity:  normal  |   Keywords:
      Blocked By:          |   Blocking:
Operating System:  All     |
---------------------------+------------------
 sortable_serialise() on Python 3 (Xapian 1.3) has two bugs on 32 bit
 systems.  You can see this with the following example:

 {{{
 $ python3
 Python 3.5.1+ (default, Jan  5 2016, 11:13:30)
 [GCC 5.3.1 20160101] on linux
 Type "help", "copyright", "credits" or "license" for more information.
 >>> from xapian import *
 >>> sortable_serialise(14215209984)
 OverflowError: Python int too large to convert to C long

 During handling of the above exception, another exception occurred:

 Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
 SystemError: <built-in function sortable_serialise> returned a result with
 an error set
 >>>
 }}}

 First, the conversion of the int to the C API's double can't handle the
 33+-bit size of the value, thus you get the OverflowError.  However,
 sortable_serialise() also doesn't properly check for and handle the
 exception, but instead returns a non-NULL result which triggers the
 SystemError once control percolates back up to the eval loop.

--
Ticket URL: <http://trac.xapian.org/ticket/703>
Xapian <http://xapian.org/>
Xapian



More information about the Xapian-tickets mailing list