diff options
Diffstat (limited to 'dev-python/gst-python/files/gst-python-1.18.4-avoid-treating-float-as-int.patch')
| -rw-r--r-- | dev-python/gst-python/files/gst-python-1.18.4-avoid-treating-float-as-int.patch | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/dev-python/gst-python/files/gst-python-1.18.4-avoid-treating-float-as-int.patch b/dev-python/gst-python/files/gst-python-1.18.4-avoid-treating-float-as-int.patch deleted file mode 100644 index d9cc6bca086b..000000000000 --- a/dev-python/gst-python/files/gst-python-1.18.4-avoid-treating-float-as-int.patch +++ /dev/null @@ -1,86 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Thibault Saunier <tsaunier@igalia.com> -Date: Tue, 16 Nov 2021 23:36:10 -0300 -Subject: [PATCH] python: Avoid treating float as int - -Since python 3.10 implicit conversion to integers using `__int__` as -been completely removed (was deprecated behavior in 3.9) so we need -to cleanly handle it now. - -See https://gitlab.gnome.org/GNOME/pitivi/-/issues/2589 - -Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1358> ---- - .../gst-python/gi/overrides/gstmodule.c | 54 ++++++++++++++++--- - 1 file changed, 47 insertions(+), 7 deletions(-) - -diff --git a/subprojects/gst-python/gi/overrides/gstmodule.c b/subprojects/gst-python/gi/overrides/gstmodule.c -index 167a1c27539a..2308eb7dcde6 100644 ---- a/gi/overrides/gstmodule.c -+++ b/gi/overrides/gstmodule.c -@@ -104,18 +104,58 @@ gi_gst_fraction_from_value (const GValue * value) - static int - gi_gst_fraction_to_value (GValue * value, PyObject * object) - { -- PyObject *numerator, *denominator; -+ glong numerator, denominator; -+ PyObject *numerator_obj, *denominator_obj, *is_integer; - -- numerator = PyObject_GetAttrString (object, "num"); -- if (numerator == NULL) -+ numerator_obj = PyObject_GetAttrString (object, "num"); -+ if (numerator_obj == NULL) - goto fail; - -- denominator = PyObject_GetAttrString (object, "denom"); -- if (denominator == NULL) -+ is_integer = PyObject_CallMethod (numerator_obj, "is_integer", NULL); -+ if (is_integer != Py_True) { -+ PyErr_Format (PyExc_TypeError, -+ "numerator %f is not an integer.", PyFloat_AsDouble (numerator_obj)); -+ Py_DECREF (is_integer); -+ goto fail; -+ } -+ Py_DECREF (is_integer); -+ -+ numerator = PyFloat_AsDouble (numerator_obj); -+ if (numerator < -G_MAXINT || numerator > G_MAXINT) { -+ PyErr_Format (PyExc_ValueError, -+ "numerator %" G_GINT64_FORMAT " is out of bound. [-%d - %d]", -+ numerator, G_MAXINT, G_MAXINT); -+ goto fail; -+ } -+ -+ denominator_obj = PyObject_GetAttrString (object, "denom"); -+ if (denominator_obj == NULL) - goto fail; - -- gst_value_set_fraction (value, -- PyLong_AsLong (numerator), PyLong_AsLong (denominator)); -+ is_integer = PyObject_CallMethod (denominator_obj, "is_integer", NULL); -+ if (is_integer != Py_True) { -+ PyErr_Format (PyExc_TypeError, -+ "denominator %f is not an integer.", -+ PyFloat_AsDouble (denominator_obj)); -+ Py_DECREF (is_integer); -+ goto fail; -+ } -+ Py_DECREF (is_integer); -+ -+ denominator = PyFloat_AsDouble (denominator_obj); -+ if (denominator == 0) { -+ PyErr_SetString (PyExc_ValueError, "denominator is 0."); -+ goto fail; -+ } -+ -+ if (denominator < -G_MAXINT || denominator > G_MAXINT) { -+ PyErr_Format (PyExc_ValueError, -+ "denominator %" G_GINT64_FORMAT " is out of bound. [-%d - %d]", -+ denominator, G_MAXINT, G_MAXINT); -+ goto fail; -+ } -+ -+ gst_value_set_fraction (value, numerator, denominator); - - return 0; - |
