Re: user defined type

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Kjetil Haaland <kjetil(dot)haaland(at)student(dot)uib(dot)no>
Cc: Michael Fuhr <mike(at)fuhr(dot)org>, pgsql-novice(at)postgresql(dot)org
Subject: Re: user defined type
Date: 2004-11-19 15:16:10
Message-ID: 27943.1100877370@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

Kjetil Haaland <kjetil(dot)haaland(at)student(dot)uib(dot)no> writes:
> an example:
> Datum alignres_out(PG_FUNCTION_ARGS) {
> char *result;
> elog(NOTICE, "result=%s", result);
> }

This code is wrong on its face. If your compiler doesn't give a warning
along the lines of "use of uninitialized value", get a better compiler.
(Note: when using gcc I think you must specify -O to get this warning.
I always use at least -O -Wall when developing with gcc.)

> This will give me NOTICE: result=alignres_out.

Pure luck that it doesn't crash instead. Apparently you're picking up a
value that happened to be left in a register by the function-call
manager, but on another machine or after any slight mod to fmgr.c that
register might contain something that's not a pointer to string at all.

regards, tom lane

In response to

Responses

Browse pgsql-novice by date

  From Date Subject
Next Message Kjetil Haaland 2004-11-19 16:07:34 Re: user defined type
Previous Message Kjetil Haaland 2004-11-19 14:42:24 Re: user defined type