> Date: Fri, 28 Aug 2009 18:28:48 +0200
> From: [email protected]
> To: [email protected]
> CC: [email protected]
> 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
*-------------------------------------------------------*



_________________________________________________________________

Responder a