Librairie C(.so), pointeurs inutilisables?
Bonjour, je travaille avec PostgreSQL 8.3.5 sur FreeBSD 7.0 et j'essai de faire fonctionner du code C.
Le probleme, c'est que je ne peux pas utiliser le type "char *" sous peine d'avoir un
"
ERROR: invalid memory alloc request size 18446744073709551613
********** Erreur **********
ERROR: invalid memory alloc request size 18446744073709551613
État SQL :XX000
"
Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
#include "/usr/local/include/postgresql/server/postgres.h"
#include "/usr/local/include/postgresql/server/fmgr.h"
#include <string.h>
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif
Datum myFunction(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(myFunction);
Datum
myFunction(PG_FUNCTION_ARGS)
{
text *newName;
// char *temp = NULL;
if( PG_ARGISNULL(0) || PG_ARGISNULL(1))
{
PG_RETURN_NULL();
}
newName = PG_GETARG_TEXT_P(0);
PG_RETURN_TEXT_P(newName);
} |
Si je commente la ligne char * temp = NULL;, j'ai un resultat vide en guise de compensation (normal).
Mais si je décommente, paf, Error.
J'ai bien testé sans l'initialisation du pointeur ou en changeant de nom sans résultats.
Aurais-je oublié quelque chose?
EDIT:
J'ai essayé de passer par un void * , même topo. Avec un int*, pareil. On ne peut pas utiliser de pointeurs autre que text*?