Search Postgresql Archives

Re: Persistence problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Thanks a lot for the patience and help. It worked.

Ivan


> To: i.bre@xxxxxxxx
> CC: kleptog@xxxxxxxxx; dalroi@xxxxxxxxxxxxxxxxxxxxxxxxxxxx; pgsql-general@xxxxxxxxxxxxxx
> Subject: Re: Persistence problem
> Date: Fri, 14 May 2010 18:34:14 -0400
> From: tgl@xxxxxxxxxxxxx
>
> "I. B." <i.bre@xxxxxxxx> 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. Sign up now.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux