[Gambas-user] error calling external function but not when debugging

je ber lo jeberlo at ...626...
Mon Dec 15 21:01:16 CET 2008


hello, I'm using gambas 2.8 on debian and I'm getting different result when
debugging code ( the result is a md5 hash string (32 characters)) but no
when executing in a normal way. The error is

Failed to set text from markup due to error parsing markup: Error on line 1
char 10: Invalid UTF-8 encoded text - not valid '�$R
���\u0002}60b725f10c9c85c70d97880dfe8191b3'

The correct result is string 60b725f10c9c85c70d97880dfe8191b3

sometimes I get the following message too.   *** glibc detected *** dinamic:
double free or corruption (out): 0x08894530 ***


I declare the function

EXTERN md5file(filename AS String, resultado AS Pointer) AS Pointer IN
"mimd5sum"

I call the function with

DIM cas AS Pointer
DIM cas2 AS Pointer
DIM cad AS String

cas = Alloc(33)
cas2 = md5file("/prueba.txt", cas)
cad = StrPtr(cas2)
Message(cad)
Free(cas)


and the function in laguage C is:

void miMDPrint (MD5_CTX *mdContext, char* resultado)
{
  int i;

  char cadtemporal[3]="";

  for (i = 0; i < 16; i++) {
    sprintf (cadtemporal, "%02x", mdContext->digest[i]);
    strcat(resultado, cadtemporal);
  }
  //strcat(resultado,"");


}


char* md5file (char* filename,char* resultado)
{

  FILE *inFile = fopen (filename, "rb");
  MD5_CTX mdContext;
  int bytes;
  unsigned char data[1024];

  if (inFile == NULL) {
    //printf ("%s can't be opened.\n", filename);
    return NULL;
  }

  MD5Init (&mdContext);
  while ((bytes = fread (data, 1, 1024, inFile)) != 0)
    MD5Update (&mdContext, data, bytes);
  MD5Final (&mdContext);
  miMDPrint (&mdContext,resultado);
  fclose (inFile);

  return resultado;

}

Any idea about this problem is welcome.

Regards.


More information about the User mailing list