rectangle intersects error

Bug #1400906 reported by Ahmet Sezgin DURAN on 2014-12-09
14
This bug affects 2 people
Affects Status Importance Assigned to Milestone
python-sfml (Ubuntu)
High
James Cowgill

Bug Description

In the v1.3 release of the library, there's a bug in "intersects" method of the Rectangle class, here:

http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/vivid/python-sfml/vivid/view/head:/src/sfml/graphics.pyx#L188

Also in the original source code on Github:

https://github.com/Sonkun/python-sfml/blob/bb9e11918508e8f38c5a308a36aaeda72896a635/src/sfml/graphics.pyx#L188

It makes "intersects" method to fail. Like this:

>>> a.global_bounds.intersects(b.global_bounds)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "graphics.pyx", line 188, in sfml.graphics.Rectangle.intersects (src/sfml/graphics.cpp:4717)
  File "graphics.pyx", line 97, in sfml.graphics.Rectangle.__init__ (src/sfml/graphics.cpp:2489)
TypeError: __init__() takes at most 2 positional arguments (4 given)

Related branches

description: updated
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in python-sfml (Ubuntu):
status: New → Confirmed

Test case:

test_case.py:

import sfml as sf
r1 = sf.Rectangle((0,0), (5,5))
r2 = sf.Rectangle((4,4), (5,5))
r1.intersects(r2)

python test_case.py
Traceback (most recent call last):
  File "test.py", line 7, in <module>
    r1.intersects(r2)
  File "graphics.pyx", line 188, in sfml.graphics.Rectangle.intersects (src/sfml/graphics.cpp:4717)
  File "graphics.pyx", line 97, in sfml.graphics.Rectangle.__init__ (src/sfml/graphics.cpp:2489)
TypeError: __init__() takes at most 2 positional arguments (4 given)

The issue seems to be a difference between CPP and Python versions.

The CPP version has 3 constructors for `Rect`, including a constructor that accepts four positional arguments:

        https://github.com/LaurentGomila/SFML/blob/master/include/SFML/Graphics/Rect.hpp#L67

The Python `Rectangle` class only supports the default constructor with no arguments and the constructor with two keyword arguments.

        https://github.com/Sonkun/python-sfml/blob/master/src/sfml/graphics.pyx#L111-L115

Inside the intersection method, an invocation of the four argument constructor is called, which is most likely the reason this breaks in python-sfml but not cpp SFML

Additionally this bug seems to have been fixed upstream:

https://github.com/Sonkun/python-sfml/blob/master/src/sfml/graphics.pyx#L202

workaround posted in forums --

        http://en.sfml-dev.org/forums/index.php?topic=11436.0

Changed in python-sfml (Ubuntu):
importance: Undecided → High
status: Confirmed → Triaged
tags: added: trusty utopic vivid
James Cowgill (jcowgill) wrote :

Fixed in the Debian git repo - will upload shortly.

Changed in python-sfml (Ubuntu):
assignee: nobody → James Cowgill (jcowgill)
status: Triaged → Fix Committed
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package python-sfml - 1.5.1.is.1.3+dfsg-2

---------------
python-sfml (1.5.1.is.1.3+dfsg-2) unstable; urgency=medium

  * debian/README.Debian
    - Add with information about removed non-dfsg files (see #732139).
  * debian/control:
    - Bump standards version - no changes.
    - Use cgit Vcs-Browser URL.
  * debian/copyright:
    - Update debian/copyright and readd Christoph Egger's copyright.
  * debian/patches:
    - Add numbers to patch names.
    - Add patch to fix sf.Rectangle.intersects (LP: #1400906).
  * debian/rules:
    - Fix arch-independent build failure.
  * debian/watch:
    - Fix watch file to work with 1.5.1 version number.

 -- James Cowgill <email address hidden> Mon, 18 May 2015 14:31:19 +0100

Changed in python-sfml (Ubuntu):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers