Thanks a lot for the patience and help. It worked.
Ivan > To: i....@live.com > CC: klep...@svana.org; dal...@solfertje.student.utwente.nl; > pgsql-general@postgresql.org > Subject: Re: [GENERAL] Persistence problem > Date: Fri, 14 May 2010 18:34:14 -0400 > From: t...@sss.pgh.pa.us > > "I. B." <i....@live.com> writes: > > OK, here is the part of the code. > > Well, as suspected, you're doing this > > > typedef struct { > > void *units; > > } mapping_t; > > and this > > > units = (uPoint *) realloc(units, result->noOfUnits * > > sizeof(uPoint)); // EXPLAINED AT THE END OF THE POST > > which means that the array isn't contiguous with the mPoint struct. > You can certainly do that and then rearrange things to make it so > afterwards, but you're not doing so now. Personally though I'd avoid > having two different representations. You'd be better off with > > typedef struct { > int4 length; > int noOfUnits; > uPoint units[1]; /* actually, a variable length array */ > } mPoint; > > and then allocating or reallocating the result struct with a size > calculation like this: > > offsetof(mPoint, units) + noOfUnits * sizeof(uPoint) > > BTW, realloc (as opposed to repalloc) doesn't seem like a tremendously > good idea here. You are leaking that memory for the life of the session. > > regards, tom lane _________________________________________________________________ Hotmail: Trusted email with Microsoft’s powerful SPAM protection. https://signup.live.com/signup.aspx?id=60969