Petr Danecek <petr@ics.cas.cz> writes:
> #include <stdio.h>
> #include <string.h>
> #include <malloc.h>
You can't use malloc() -- you have to use PostgreSQL's own palloc().
So you want to replace that "#include <malloc.h>" with:
#include <postgres.h> #include <utils/palloc.h>
So, the actual allocation in mytype_in() must be changed:
> mytype *
> mytype_in (char *str)
> {
> mytype *ret;
>
> ret = malloc (sizeof(mytype));
Here, the call should be to palloc() instead of malloc(), thus:
ret = palloc (sizeof(mytype));
The reason for this is that PostgreSQL does its own memory management,
for efficiency reasons, and if you suddenly start calling malloc(),
you screw up its logic.
-tih
--
Popularity is the hallmark of mediocrity. --Niles Crane, "Frasier"