Re: Ayuda con funcion en C

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/

In response to

Responses

Browse pgsql-es-ayuda by date

  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