From cda6c6bd636d136345e2302e3c4b24e2e2499a3e Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Thu, 5 Jan 2012 16:10:53 +0000 Subject: [PATCH] Switch memory context back before returning in RASTER_bandmetadata Fixes second case in #1432 git-svn-id: http://svn.osgeo.org/postgis/trunk@8678 b70326c6-7e19-0410-871a-916f4a2858ee --- raster/rt_pg/rt_pg.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/raster/rt_pg/rt_pg.c b/raster/rt_pg/rt_pg.c index 78fb52a73..d045714ae 100644 --- a/raster/rt_pg/rt_pg.c +++ b/raster/rt_pg/rt_pg.c @@ -7778,6 +7778,7 @@ Datum RASTER_bandmetadata(PG_FUNCTION_ARGS) /* raster */ raster = rt_raster_deserialize(pgraster, FALSE); if (!raster) { + MemoryContextSwitchTo(oldcontext); elog(ERROR, "RASTER_bandmetadata: Could not deserialize raster"); SRF_RETURN_DONE(funcctx); } @@ -7785,8 +7786,9 @@ Datum RASTER_bandmetadata(PG_FUNCTION_ARGS) /* numbands */ numBands = rt_raster_get_num_bands(raster); if (numBands < 1) { - elog(NOTICE, "Raster provided has no bands"); rt_raster_destroy(raster); + MemoryContextSwitchTo(oldcontext); + elog(NOTICE, "Raster provided has no bands"); SRF_RETURN_DONE(funcctx); } @@ -7831,6 +7833,7 @@ Datum RASTER_bandmetadata(PG_FUNCTION_ARGS) elog(NOTICE, "Invalid band index: %d. Indices must be 1-based. Returning NULL", idx); pfree(bandNums); rt_raster_destroy(raster); + MemoryContextSwitchTo(oldcontext); SRF_RETURN_DONE(funcctx); } @@ -7855,6 +7858,7 @@ Datum RASTER_bandmetadata(PG_FUNCTION_ARGS) if (NULL == band) { elog(NOTICE, "Could not get raster band at index %d", bandNums[i]); rt_raster_destroy(raster); + MemoryContextSwitchTo(oldcontext); SRF_RETURN_DONE(funcctx); } @@ -7903,6 +7907,7 @@ Datum RASTER_bandmetadata(PG_FUNCTION_ARGS) /* Build a tuple descriptor for our result type */ if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE) { + MemoryContextSwitchTo(oldcontext); ereport(ERROR, ( errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg( -- 2.40.0