ports/115781: [PATCH] Fix py-kqueue with Python 2.5
Xin LI
delphij at FreeBSD.org
Fri Aug 24 10:40:02 UTC 2007
>Number: 115781
>Category: ports
>Synopsis: [PATCH] Fix py-kqueue with Python 2.5
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Fri Aug 24 10:40:01 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator: Xin LI
>Release: FreeBSD 6.2-RELEASE-p7 i386
>Organization:
The FreeBSD Project
>Environment:
System: FreeBSD tarsier.delphij.net 6.2-RELEASE-p7 FreeBSD 6.2-RELEASE-p7 #5: Thu Aug 2 22:09:50 CST 2007 delphij at tarsier.delphij.net:/usr/obj/usr/src/sys/TARSIER i386
>Description:
With python 2.5, the Python 1.5 API has been changed, therefore,
we have to reflect these changes or py-kqueue would crash.
Maintainer CC'ed. This bug is critical, which makes py-kqueue
unusable with Python 2.5.
>How-To-Repeat:
Python would crash with the following codelet:
import KQueue
p = KQueue.KQueue()
>Fix:
--- patch-py-kqueue begins here ---
Index: Makefile
===================================================================
RCS file: /home/ncvs/ports/devel/py-kqueue/Makefile,v
retrieving revision 1.16
diff -u -p -r1.16 Makefile
--- Makefile 30 Jul 2007 09:41:15 -0000 1.16
+++ Makefile 24 Aug 2007 10:31:40 -0000
@@ -7,7 +7,7 @@
PORTNAME= kqueue
PORTVERSION= 1.4
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= devel python
MASTER_SITES= http://ox.eicat.ca/~dgilbert/files/
PKGNAMEPREFIX= py-
Index: files/patch-kqsyscallmodule.c
===================================================================
RCS file: files/patch-kqsyscallmodule.c
diff -N files/patch-kqsyscallmodule.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ files/patch-kqsyscallmodule.c 24 Aug 2007 10:31:14 -0000
@@ -0,0 +1,61 @@
+--- ./kqsyscallmodule.c.orig 2001-01-29 10:59:50.000000000 +0800
++++ ./kqsyscallmodule.c 2007-08-24 18:27:42.250897722 +0800
+@@ -42,6 +42,12 @@
+
+ #define MAX_KEVENTS 512
+
++#if PYTHON_API_VERSION <= 1007
++ /* 1.5 compatibility */
++#define PyObject_New PyObject_NEW
++#define PyObject_Del PyMem_DEL
++#endif
++
+ // ----------------------------------------------------------------------
+ // KQEventObject
+ // ----------------------------------------------------------------------
+@@ -58,8 +64,7 @@
+ static KQEventObject *
+ newKQEventObject (PyObject *arg)
+ {
+- // return PyObject_New (KQEventObject, &KQEvent_Type);
+- return PyObject_NEW (KQEventObject, &KQEvent_Type);
++ return PyObject_New (KQEventObject, &KQEvent_Type);
+ }
+
+ /* KQEvent methods */
+@@ -67,8 +72,7 @@
+ static void
+ KQEvent_dealloc(KQEventObject *self)
+ {
+- // PyObject_Del(self);
+- PyMem_DEL (self);
++ PyObject_Del(self);
+ }
+
+ // --------------------------------------------------------------------------------
+@@ -201,14 +205,14 @@
+ static KQueueObject *
+ newKQueueObject (PyObject *arg)
+ {
+- KQueueObject * self = PyObject_NEW (KQueueObject, &KQueue_Type);
++ KQueueObject * self = PyObject_New(KQueueObject, &KQueue_Type);
+ if (!self) {
+ PyErr_SetFromErrno (PyExc_MemoryError);
+ return NULL;
+ } else {
+ int kqfd = kqueue();
+ if (kqfd < 0) {
+- PyMem_DEL (self);
++ PyObject_Del(self);
+ PyErr_SetFromErrno (PyExc_OSError);
+ return NULL;
+ } else {
+@@ -234,7 +238,7 @@
+ KQueue_dealloc(KQueueObject *self)
+ {
+ close (self->fd);
+- PyMem_DEL(self);
++ PyObject_Del(self);
+ }
+
+ /* Call kevent(2) and do appropriate digestion of lists. */
--- patch-py-kqueue ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list