Ticket #468 (closed defect: fixed)

Opened 3 years ago

Last modified 3 years ago

crash in GPJ_grass_to_wkt() on windows

Reported by: jef Owned by: grass-dev@…
Priority: major Milestone: 6.4.0
Component: Default Version: unspecified
Keywords: Cc:
Platform: MSWindows XP CPU: Unspecified

Description

QGIS crashes when calling GPJ_grass_to_wkt(), when the MinGW built libraries are called from MSVC build QGIS. This is caused to using G_free() on a string alloced in proj.4 with pj_malloc(). The attached patch free the string with pj_dalloc()

Attachments

patch_for_468.diff Download (361 bytes) - added by jef 3 years ago.
patch to fix #468

Change History

Changed 3 years ago by jef

patch to fix #468

follow-up: ↓ 2   Changed 3 years ago by neteler

The definition of pj_dalloc() is here:  http://svn.osgeo.org/metacrs/proj/trunk/proj/src/pj_malloc.c

void
pj_dalloc(void *ptr) {
	free(ptr);
}

The definition of G_free() is here:  http://trac.osgeo.org/grass/browser/grass/branches/develbranch_6/lib/gis/alloc.c#L127

void G_free(void *buf)
{
    free(buf);
}

Is there a difference?

in reply to: ↑ 1 ; follow-up: ↓ 3   Changed 3 years ago by jef

Replying to neteler:

The definition of pj_dalloc() is here:  http://svn.osgeo.org/metacrs/proj/trunk/proj/src/pj_malloc.c {{{ void pj_dalloc(void *ptr) { free(ptr); } }}} The definition of G_free() is here:  http://trac.osgeo.org/grass/browser/grass/branches/develbranch_6/lib/gis/alloc.c#L127 {{{ void G_free(void *buf) { free(buf); } }}} Is there a difference?

sure. Every DLL runs it own memory management and therefore memory malloc() in a one DLL needs to be free by the very same DLL and that's probably the sole reason for the existance of above functions (same for GDAL, GEOS...).

in reply to: ↑ 2   Changed 3 years ago by jef

Replying to jef:

sure. Every DLL runs it own memory management and therefore memory malloc() in a one DLL needs to be free by the very same DLL and that's probably the sole reason for the existance of above functions (same for GDAL, GEOS...).

Did you also have a dejavu? ;)  http://trac.osgeo.org/gdal/ticket/1983

  Changed 3 years ago by pkelly

I fixed this in TRUNK, and fixed a few memory leaks at the same time. The changes are too complicated/risky to backport to 6.x though, so the simple patch attached here should be OK for a quick fix.

  Changed 3 years ago by neteler

  • status changed from new to closed
  • resolution set to fixed

jef's patch applied to 6.4.svn (r35668) and 6.4.0svn (r35669).

Note: See TracTickets for help on using tickets.