PG_FUNCTION_INFO_V1(RASTER_in);
Datum RASTER_in(PG_FUNCTION_ARGS)
{
- rt_raster raster;
- char *hexwkb = PG_GETARG_CSTRING(0);
- void *result = NULL;
-
- POSTGIS_RT_DEBUG(3, "Starting");
+ rt_raster raster;
+ char *hexwkb = PG_GETARG_CSTRING(0);
+ void *result = NULL;
- raster = rt_raster_from_hexwkb(hexwkb, strlen(hexwkb));
- result = rt_raster_serialize(raster);
+ POSTGIS_RT_DEBUG(3, "Starting");
- SET_VARSIZE(result, ((rt_pgraster*)result)->size);
+ raster = rt_raster_from_hexwkb(hexwkb, strlen(hexwkb));
+ if (raster == NULL)
+ PG_RETURN_NULL();
- rt_raster_destroy(raster);
+ result = rt_raster_serialize(raster);
+ rt_raster_destroy(raster);
+ if (result == NULL)
+ PG_RETURN_NULL();
- if ( NULL != result )
- PG_RETURN_POINTER(result);
- else
- PG_RETURN_NULL();
+ SET_VARSIZE(result, ((rt_pgraster*)result)->size);
+ PG_RETURN_POINTER(result);
}
/**
skewx, skewy, srid);
raster = rt_raster_new(width, height);
- if (!raster) {
+ if (raster == NULL)
PG_RETURN_NULL(); /* error was supposedly printed already */
- }
rt_raster_set_scale(raster, scalex, scaley);
rt_raster_set_offsets(raster, ipx, ipy);
default:
elog(ERROR, "RASTER_setPixelValuesArray: Invalid data type for new values");
rt_raster_destroy(raster);
- pfree(pgraster);
+ PG_FREE_IF_COPY(pgraster, 0);
PG_RETURN_NULL();
break;
}
pfree(nulls);
}
rt_raster_destroy(raster);
- pfree(pgraster);
+ PG_FREE_IF_COPY(pgraster, 0);
PG_RETURN_NULL();
}
pfree(elements);
pfree(nulls);
rt_raster_destroy(raster);
- pfree(pgraster);
+ PG_FREE_IF_COPY(pgraster, 0);
PG_RETURN_NULL();
}
elog(ERROR, "RASTER_setPixelValuesArray: Invalid data type for noset flags");
pfree(pixval);
rt_raster_destroy(raster);
- pfree(pgraster);
+ PG_FREE_IF_COPY(pgraster, 0);
PG_RETURN_NULL();
break;
}
pfree(nulls);
}
rt_raster_destroy(raster);
- pfree(pgraster);
+ PG_FREE_IF_COPY(pgraster, 0);
PG_RETURN_NULL();
}
elog(ERROR, "Cannot get value of pixel. Returning NULL");
pfree(pixval);
rt_raster_destroy(raster);
- pfree(pgraster);
+ PG_FREE_IF_COPY(pgraster, 0);
PG_RETURN_NULL();
}
/* serialize new raster */
pgrtn = rt_raster_serialize(raster);
rt_raster_destroy(raster);
- pfree(pgraster);
+ PG_FREE_IF_COPY(pgraster, 0);
if (!pgrtn)
PG_RETURN_NULL();