hexwkb = rt_raster_to_hexwkb(raster, &hexwkbsize);
if (!hexwkb) {
elog(ERROR, "RASTER_out: Could not HEX-WKBize raster");
+ rt_raster_destroy(raster);
PG_RETURN_NULL();
}
wkb = rt_raster_to_wkb(raster, &wkb_size);
if (!wkb) {
elog(ERROR, "RASTER_to_bytea: Could not allocate and generate WKB data");
+ rt_raster_destroy(raster);
PG_RETURN_NULL();
}
wkb = rt_raster_to_wkb(raster, &wkb_size);
if (!wkb) {
elog(ERROR, "RASTER_to_binary: Could not allocate and generate WKB data");
+ rt_raster_destroy(raster);
PG_RETURN_NULL();
}
convexhull = rt_raster_get_convex_hull(raster);
if ( ! convexhull ) {
elog(ERROR, "RASTER_convex_hull: Could not get raster's convex hull");
+ rt_raster_destroy(raster);
PG_RETURN_NULL();
}
}
ereport(ERROR,
(errcode(ERRCODE_OUT_OF_MEMORY),
errmsg("Could not deserialize raster")));
+ MemoryContextSwitchTo(oldcontext);
SRF_RETURN_DONE(funcctx);
}
ereport(ERROR,
(errcode(ERRCODE_NO_DATA_FOUND),
errmsg("Could not polygonize raster")));
+ rt_raster_destroy(raster);
+ MemoryContextSwitchTo(oldcontext);
SRF_RETURN_DONE(funcctx);
}
rt_raster_set_srid(raster, srid);
pgraster = rt_raster_serialize(raster);
+ rt_raster_destroy(raster);
if ( ! pgraster ) PG_RETURN_NULL();
SET_VARSIZE(pgraster, pgraster->size);
- rt_raster_destroy(raster);
-
PG_RETURN_POINTER(pgraster);
}
rt_raster_set_srid(raster, newSRID);
pgraster = rt_raster_serialize(raster);
+ rt_raster_destroy(raster);
if (!pgraster) PG_RETURN_NULL();
SET_VARSIZE(pgraster, pgraster->size);
- rt_raster_destroy(raster);
+
PG_RETURN_POINTER(pgraster);
}
rt_raster_set_scale(raster, size, size);
pgraster = rt_raster_serialize(raster);
+ rt_raster_destroy(raster);
if ( ! pgraster ) PG_RETURN_NULL();
SET_VARSIZE(pgraster, pgraster->size);
- rt_raster_destroy(raster);
-
PG_RETURN_POINTER(pgraster);
}
rt_raster_set_scale(raster, xscale, yscale);
pgraster = rt_raster_serialize(raster);
+ rt_raster_destroy(raster);
if ( ! pgraster ) PG_RETURN_NULL();
SET_VARSIZE(pgraster, pgraster->size);
- rt_raster_destroy(raster);
-
PG_RETURN_POINTER(pgraster);
}
rt_raster_set_skews(raster, skew, skew);
pgraster = rt_raster_serialize(raster);
+ rt_raster_destroy(raster);
if ( ! pgraster ) PG_RETURN_NULL();
SET_VARSIZE(pgraster, pgraster->size);
- rt_raster_destroy(raster);
-
PG_RETURN_POINTER(pgraster);
}
rt_raster_set_skews(raster, xskew, yskew);
pgraster = rt_raster_serialize(raster);
+ rt_raster_destroy(raster);
if ( ! pgraster ) PG_RETURN_NULL();
SET_VARSIZE(pgraster, pgraster->size);
- rt_raster_destroy(raster);
-
PG_RETURN_POINTER(pgraster);
}
rt_raster_set_offsets(raster, xoffset, yoffset);
pgraster = rt_raster_serialize(raster);
+ rt_raster_destroy(raster);
if ( ! pgraster ) PG_RETURN_NULL();
SET_VARSIZE(pgraster, pgraster->size);
- rt_raster_destroy(raster);
-
PG_RETURN_POINTER(pgraster);
}
rt_raster_set_skews(raster, xskew, yskew);
pgraster = rt_raster_serialize(raster);
+ rt_raster_destroy(raster);
if ( ! pgraster ) PG_RETURN_NULL();
SET_VARSIZE(pgraster, pgraster->size);
- rt_raster_destroy(raster);
-
PG_RETURN_POINTER(pgraster);
}
band = rt_raster_get_band(raster, bandindex - 1);
if ( ! band ) {
elog(NOTICE, "Could not find raster band of index %d when getting pixel type. Returning NULL", bandindex);
+ rt_raster_destroy(raster);
PG_RETURN_NULL();
}
band = rt_raster_get_band(raster, bandindex - 1);
if ( ! band ) {
elog(NOTICE, "Could not find raster band of index %d when getting pixel type name. Returning NULL", bandindex);
+ rt_raster_destroy(raster);
PG_RETURN_NULL();
}
memset(VARDATA(result), 0, name_size);
ptr = (char *)result + VARHDRSZ;
-
- switch (pixtype)
- {
- case PT_1BB: /* 1-bit boolean */
- strcpy(ptr, "1BB");
- break;
- case PT_2BUI: /* 2-bit unsigned integer */
- strcpy(ptr, "2BUI");
- break;
- case PT_4BUI: /* 4-bit unsigned integer */
- strcpy(ptr, "4BUI");
- break;
- case PT_8BSI: /* 8-bit signed integer */
- strcpy(ptr, "8BSI");
- break;
- case PT_8BUI: /* 8-bit unsigned integer */
- strcpy(ptr, "8BUI");
- break;
- case PT_16BSI:/* 16-bit signed integer */
- strcpy(ptr, "16BSI");
- break;
- case PT_16BUI:/* 16-bit unsigned integer */
- strcpy(ptr, "16BUI");
- break;
- case PT_32BSI:/* 32-bit signed integer */
- strcpy(ptr, "32BSI");
- break;
- case PT_32BUI:/* 32-bit unsigned integer */
- strcpy(ptr, "32BUI");
- break;
- case PT_32BF: /* 32-bit float */
- strcpy(ptr, "32BF");
- break;
- case PT_64BF: /* 64-bit float */
-
- strcpy(ptr, "64BF");
- break;
- default: /* PT_END=13 */
- elog(ERROR, "RASTER_getBandPixelTypeName: Invalid value of pixel type");
- pfree(result);
- PG_RETURN_NULL();
- }
+ strcpy(ptr, rt_pixtype_name(pixtype));
size = VARHDRSZ + strlen(ptr);
SET_VARSIZE(result, size);
band = rt_raster_get_band(raster, bandindex - 1);
if ( ! band ) {
elog(NOTICE, "Could not find raster band of index %d when getting band nodata value. Returning NULL", bandindex);
+ rt_raster_destroy(raster);
PG_RETURN_NULL();
}
if ( ! rt_band_get_hasnodata_flag(band) ) {
/* Raster does not have a nodata value set so we return NULL */
+ rt_raster_destroy(raster);
PG_RETURN_NULL();
}
}
pgraster = rt_raster_serialize(raster);
+ rt_raster_destroy(raster);
if (! pgraster) PG_RETURN_NULL();
SET_VARSIZE(pgraster, pgraster->size);
- rt_raster_destroy(raster);
-
PG_RETURN_POINTER(pgraster);
}
/* Serialize raster again */
pgraster = rt_raster_serialize(raster);
+ rt_raster_destroy(raster);
if ( ! pgraster ) PG_RETURN_NULL();
SET_VARSIZE(pgraster, pgraster->size);
- rt_raster_destroy(raster);
-
PG_RETURN_POINTER(pgraster);
}
band = rt_raster_get_band(raster, bandindex - 1);
if ( ! band ) {
elog(NOTICE, "Could not find raster band of index %d when determining if band is nodata. Returning NULL", bandindex);
+ rt_raster_destroy(raster);
PG_RETURN_NULL();
}
band = rt_raster_get_band(raster, bandindex - 1);
if ( ! band ) {
elog(NOTICE, "Could not find raster band of index %d when getting band path. Returning NULL", bandindex);
+ rt_raster_destroy(raster);
PG_RETURN_NULL();
}
bandpath = rt_band_get_ext_path(band);
+ rt_band_destroy(band);
+ rt_raster_destroy(raster);
if ( ! bandpath )
{
PG_RETURN_NULL();
strcpy((char *) VARDATA(result), bandpath);
- rt_raster_destroy(raster);
-
PG_RETURN_TEXT_P(result);
}
if (! band) {
elog(NOTICE, "Could not find raster band of index %d when getting pixel "
"value. Returning NULL", bandindex);
+ rt_raster_destroy(raster);
PG_RETURN_NULL();
}
/* Fetch pixel using 0-based coordinates */
* then return nodata = NULL */
if (result == -1 || (hasnodata && rt_band_get_hasnodata_flag(band) &&
pixvalue == rt_band_get_nodata(band))) {
+ rt_raster_destroy(raster);
PG_RETURN_NULL();
}
POSTGIS_RT_DEBUGF(3, "Pixel coordinates (%d, %d)", x, y);
/* Deserialize raster */
- if (PG_ARGISNULL(0)) PG_RETURN_NULL();
pgraster = (rt_pgraster *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
raster = rt_raster_deserialize(pgraster, FALSE);
}
pgraster = rt_raster_serialize(raster);
+ rt_raster_destroy(raster);
if ( ! pgraster ) PG_RETURN_NULL();
SET_VARSIZE(pgraster, pgraster->size);
- rt_raster_destroy(raster);
-
PG_RETURN_POINTER(pgraster);
}
if (numbands == oldnumbands || bandindex == -1) {
elog(ERROR, "RASTER_addband: Could not add band to raster. "
"Returning NULL");
+ rt_raster_destroy(raster);
PG_RETURN_NULL();
}
}
pgraster = rt_raster_serialize(raster);
+ rt_raster_destroy(raster);
if (!pgraster) PG_RETURN_NULL();
SET_VARSIZE(pgraster, pgraster->size);
- rt_raster_destroy(raster);
-
PG_RETURN_POINTER(pgraster);
}
fromrast = rt_raster_deserialize(pgraster, FALSE);
if (!fromrast) {
elog(ERROR, "RASTER_copyband: Could not deserialize second raster");
+ rt_raster_destroy(torast);
PG_RETURN_NULL();
}