classification
Title: PyLong_AsDouble Behaviour is Weird
Type: Stage: resolved
Components: Build Versions: Python 2.7
process
Status: closed Resolution: not a bug
Dependencies: Superseder:
Assigned To: Nosy List: nico, serhiy.storchaka
Priority: normal Keywords:

Created on 2017-02-10 08:55 by nico, last changed 2017-02-10 09:09 by serhiy.storchaka. This issue is now closed.

Messages (2)
msg287486 - (view) Author: (nico) Date: 2017-02-10 08:55
I'm using the pre-installed version of Python 2.7.12 on Ubuntu 16.04. Pretty straight forward error the following code:

PyObject * intobj = PyInt_FromLong(10);
double d1 = (double)PyLong_AsLong(intobj);
double d2 = PyLong_AsDouble(intobj);
printf("Should be the same: %f vs %f", d1, d2);

Does not display the same number for both double since `PyLong_AsDouble` raises the error, SystemError: ../Objects/longobject.c:2336: bad argument to internal function and returns -1.0 instead of 10.0.
msg287491 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2017-02-10 09:09
This is incorrect use of PyLong_AsDouble(). It should be used with a long object, but you use it with an int object.
History
Date User Action Args
2017-02-10 09:09:15serhiy.storchakasetstatus: open -> closed

nosy: + serhiy.storchaka
messages: + msg287491

resolution: not a bug
stage: resolved
2017-02-10 08:55:23nicocreate