Re: Problemas al imprimir cadenas de caracteres

From: Manuel Sugawara <masm(at)fciencias(dot)unam(dot)mx>
To: Juan Pablo Espino <jp(dot)espino(at)gmail(dot)com>
Cc: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Problemas al imprimir cadenas de caracteres
Date: 2005-04-18 21:31:52
Message-ID: m38y3fpy9j.fsf@conexa.fciencias.unam.mx
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Juan Pablo Espino <jp(dot)espino(at)gmail(dot)com> writes:

> Hola a todos,

No estoy seguro de que quieres hacer pero claramente C no funciona
como tu piensas :-(

> Datum
> ej2(PG_FUNCTION_ARGS)
> {
> int32 x = PG_GETARG_INT32(0);
> text *t = PG_GETARG_TEXT_P(1);
> int32 z;
> int32 new_size = VARSIZE(t) - VARHDRSZ;
> char *new = (char *) palloc(new_size);
^^^^^^^^^^^^^^^
Necesitas allocar tanta memoria como la necesaria para mantener la
cadena más uno para poner el '\0', en C este carácter es la marca de
fin de cadena.

> new = t->vl_dat;

Necesitas copiar char a char la cadena (aqui ya perdiste la referencia
a la memoria previamente allocada, therefore, memory leak!). Revisa
memcpy(3) o strcpy(3).

> z = x*8;
> elog(INFO, "Cadena: %s", new);
> PG_RETURN_INT32(z);
> }
>

Saludos,
Manuel.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Juan Pablo Espino 2005-04-18 22:21:09 Problemas al imprimir cadenas de caracteres
Previous Message aberub 2005-04-18 21:06:31 Re: LOG de P0stgres 7.4.3 en Linux