From: | Rafael Martinez <r(dot)m(dot)guerrero(at)usit(dot)uio(dot)no> |
---|---|
To: | Edwin Quijada <listas_quijada(at)hotmail(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Ayuda con funcion en C |
Date: | 2009-08-28 16:35:14 |
Message-ID: | 4A980742.7020307@usit.uio.no |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Rafael Martinez wrote:
> Edwin Quijada wrote:
>
>> ERROR: invalid memory alloc request size 4294967293
>>
>>
> [......]
>> text *new_t = (text *) palloc(LENMAX);
>>
> [......]
>> memcpy(VARDATA(new_t),buf,strlen(buf));
>
> Hola
>
> Asignas/reservas el espacio a usar por new_t con palloc(40) y despues
> intentas copiar los datos en buf[BUFSIZ] a este espacio.
>
> ¿Que valor tiene BUFSIZ?, probablemente mayor que 40, con lo que no
> tienes suficiente memoria asignada/reservada para copiar buf en new_t.
>
Pensandolo mejor, creo que tambien deberias de hacer esto:
SET_VARSIZE(new_t, strlen(buf) + VARHDRSZ);
antes de ejecutar el memcpy(). Por supuesto el espacio asignado a new_t
no puede ser menor que el usado por buf.
--
Rafael Martinez, <r(dot)m(dot)guerrero(at)usit(dot)uio(dot)no>
Center for Information Technology Services
University of Oslo, Norway
PGP Public Key: http://folk.uio.no/rafael/
From | Date | Subject | |
---|---|---|---|
Next Message | kernel | 2009-08-28 16:35:42 | Re: rendimiento 8.2 VS 8.3 |
Previous Message | Rafael Martinez | 2009-08-28 16:28:48 | Re: Ayuda con funcion en C |