From 7c81d7953c27da65efc600657be647f7ed1398cf Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sat, 19 Apr 2008 22:55:03 +0000
Subject: [PATCH] seg_size() has to be V1 calling convention, too.

---
 contrib/seg/seg.c | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/contrib/seg/seg.c b/contrib/seg/seg.c
index 5d224b951d8..cb0ce4f5cab 100644
--- a/contrib/seg/seg.c
+++ b/contrib/seg/seg.c
@@ -35,12 +35,14 @@ extern int	 seg_yydebug;
 */
 PG_FUNCTION_INFO_V1(seg_in);
 PG_FUNCTION_INFO_V1(seg_out);
+PG_FUNCTION_INFO_V1(seg_size);
 PG_FUNCTION_INFO_V1(seg_lower);
 PG_FUNCTION_INFO_V1(seg_upper);
 PG_FUNCTION_INFO_V1(seg_center);
 
 Datum		seg_in(PG_FUNCTION_ARGS);
 Datum		seg_out(PG_FUNCTION_ARGS);
+Datum		seg_size(PG_FUNCTION_ARGS);
 Datum		seg_lower(PG_FUNCTION_ARGS);
 Datum		seg_upper(PG_FUNCTION_ARGS);
 Datum		seg_center(PG_FUNCTION_ARGS);
@@ -81,7 +83,6 @@ bool		seg_over_right(SEG * a, SEG * b);
 SEG		   *seg_union(SEG * a, SEG * b);
 SEG		   *seg_inter(SEG * a, SEG * b);
 void		rt_seg_size(SEG * a, float *sz);
-float	   *seg_size(SEG * a);
 
 /*
 ** Various operators
@@ -717,16 +718,12 @@ rt_seg_size(SEG * a, float *size)
 	return;
 }
 
-float *
-seg_size(SEG * a)
+Datum
+seg_size(PG_FUNCTION_ARGS)
 {
-	float	   *result;
-
-	result = (float *) palloc(sizeof(float));
-
-	*result = (float) Abs(a->upper - a->lower);
+	SEG 	*seg = (SEG *) PG_GETARG_POINTER(0);
 
-	return (result);
+	PG_RETURN_FLOAT4((float) Abs(seg->upper - seg->lower));
 }
 
 
-- 
GitLab