#12438 closed (fixed)
use GEOSFree instead of c.free in geos binding.
| Reported by: | Owned by: | nobody | |
|---|---|---|---|
| Component: | GIS | Version: | 1.1 |
| Severity: | Keywords: | ||
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
Idea is to have a portable use of 'free' among platforms, including cygwin.
A so called free function is done in geos, and is called 'GEOSFree'.
The patch is trivial, just use this function instead of libc.free.
diff -uNr Django-1.0.2-final/django/contrib/gis/geos/prototypes/errcheck.py Django-1.0.2-final.cygwin/django/contrib/gis/geos/prototypes/errcheck.py
--- Django-1.0.2-final/django/contrib/gis/geos/prototypes/errcheck.py 2008-11-19 06:44:22.000000000 +0100
+++ Django-1.0.2-final.cygwin/django/contrib/gis/geos/prototypes/errcheck.py 2009-12-23 20:24:42.875000000 +0100
@@ -1,9 +1,11 @@
"""
Error checking functions for GEOS ctypes prototype functions.
"""
+import sys
import os
-from ctypes import string_at, CDLL
+from ctypes import c_void_p, string_at, CDLL
from ctypes.util import find_library
+from django.contrib.gis.geos.libgeos import lgeos
from django.contrib.gis.geos.error import GEOSException
# Getting the C library, needed to free the string pointers
@@ -14,6 +16,11 @@
libc_name = 'libc'
libc = CDLL(find_library(libc_name))
+free = lgeos.GEOSFree
+free.argtypes = [c_void_p]
+free.restype = None
+
+
### ctypes error checking routines ###
def last_arg_byref(args):
"Returns the last C argument's by reference value."
@@ -55,7 +62,7 @@
# argument on these routines, and its needed to determine the
# correct size.
s = string_at(result, last_arg_byref(cargs))
- libc.free(result)
+ free(result)
return s
def check_string(result, func, cargs):
@@ -64,7 +71,7 @@
# Getting the string value at the pointer address.
s = string_at(result)
# Freeing the memory allocated by the GEOS library.
- libc.free(result)
+ free(result)
return s
def check_zero(result, func, cargs):
Change History (2)
comment:1 by , 16 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
comment:2 by , 16 years ago
Note:
See TracTickets
for help on using tickets.
(In [11979]) Fixed #12438 -- now use
GEOSFreeto free string pointers allocated within GEOS when available; now parse out subminor version, and added aGEOS_VERSIONtuple.