Hi hackers,

I have a question on the code below:

Datum
numeric_cmp(PG_FUNCTION_ARGS)
{
  Numeric num1 = PG_GETARG_NUMERIC(0);
  Numeric num2 = PG_GETARG_NUMERIC(1);
  int result;

  result = cmp_numerics(num1, num2);

  PG_FREE_IF_COPY(num1, 0);
  PG_FREE_IF_COPY(num2, 1);

  PG_RETURN_INT32(result);
}

It seems to me that num1 is a copy of fcinfo->arg[0]. It is passed to
the function cmp_numerics(), It's value remains the same after the
call. Also, cmp_numerics() does not have a handle to fcinfo, so it
can't modify fcinfo->arg[0].

Isn't it true that pfree() will never be called by PG_FREE_IF_COPY?

Cheers,
-cktan


Reply via email to