RE: Ayuda con funcion en C

From: Edwin Quijada <listas_quijada(at)hotmail(dot)com>
To: <r(dot)m(dot)guerrero(at)usit(dot)uio(dot)no>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Ayuda con funcion en C
Date: 2009-08-28 16:43:21
Message-ID: BLU137-W58D5014CB9DD01C4A8639E3F50@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

> Date: Fri, 28 Aug 2009 18:28:48 +0200
> From: r(dot)m(dot)guerrero(at)usit(dot)uio(dot)no
> To: listas_quijada(at)hotmail(dot)com
> CC: pgsql-es-ayuda(at)postgresql(dot)org
> Subject: Re: [pgsql-es-ayuda] Ayuda con funcion en C
>
> 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.
>
> un saludo

Hice un cambio de BUFSIZ por LENMAX para q todo estuviera de la misma manera
La funcion ahora es

Datum
pg_serverid(PG_FUNCTION_ARGS)
{
int32 arg = PG_GETARG_INT32(0);
char *cmd = "php /movil/serverkey.php";
char *arch = "/movil/serverkey.php";
char buf[LENMAX];
FILE *fp,*ptr;

text *new_t = (text *) palloc(LENMAX+1);

if ((fp = fopen(arch,"r"))==NULL) {PG_RETURN_BOOL(false);}

if ((ptr = popen(cmd, "r")) != NULL)
while (fgets(buf, LENMAX, ptr) != NULL);
(void) pclose(ptr);

memcpy(VARDATA(new_t),buf,strlen(buf));
PG_RETURN_TEXT_P(new_t);
}

*-------------------------------------------------------*
*-Edwin Quijada
*-Developer DataBase
*-JQ Microsistemas

*-Soporte PostgreSQL

*-www.jqmicrosistemas.com
*-809-849-8087
*-------------------------------------------------------*

_________________________________________________________________

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Edwin Quijada 2009-08-28 16:49:12 RE: Ayuda con funcion en C
Previous Message kernel 2009-08-28 16:35:42 Re: rendimiento 8.2 VS 8.3