id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	platform	cpu
866	Semantic of free() and G_free() for G_free_key_value()	mloskot	grass-dev@lists.osgeo.org	"Recently, a bug has been submitted [http://trac.osgeo.org/qgis/ticket/2303 to QGIS] and forwarded [http://trac.osgeo.org/gdal/ticket/3323 to GDAL].

IMHO, the problem is in GRASS.

The function is [source:grass/trunk/lib/gis/key_value1.c?@35855#L149 G_free_key_value] not proof against nullptr and, given purpose of this function, if pointer to key is null, it should do nothing. This is a standard semantic of free() function in C library. Moreover, G_free function already follows semantic of free(), so G_free_key_value() should do it as well.

In other words, it should read as follows:

{{{
void G_free_key_value(struct Key_Value *kv)
{
   if (kv != NULL)
   {
   }
}
}}}
"	defect	closed	normal		LibGIS	svn-trunk	fixed	gdal		All	Unspecified
