ayuda, serializar c*

Iniciado por ktemo, 14 Marzo 2012, 03:02 AM

0 Miembros y 1 Visitante están viendo este tema.

ktemo

Hola

estoy trabajando con una libreria para lectores de huella y en una de las funciones me escribe la huella leida en un objeto de este tipo:

unsigned char* fprint;

como necesito utilizarlo en python estoy haciendo los wrappers y necesito serializar esa variable
para poder guardarla o manipularla mas adelante, sin embargo todo lo que intento me produce errores de segmentacion, tengo esta funcion:

void pydp_fmd_get_data(char **fmd_data, char* data, int length)
{
*fmd_data = (char *) malloc(length);
memcpy(fmd_data, data, length);
}

length es la dimension de la variable fprint, asi es como me lo devuelve el api.

Espero puedan ayudarme.

Eternal Idol

No entiendo muy bien para que hacer un copia pero:

memcpy(*fmd_data, data, length);
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

ktemo

hacia una copia porque lo hiba manipular despues pero queria conservar el original para otros propositos, corregi lo que me comentas pero aun asi obtenia fallos de segmentacion, ya no con memcpy sino con swig, asi que al final cambie algunas cosas y puse un estructura con __attribute__((__packed__))

al final quedo asi:

struct dp_fmd_data {
   unsigned char* data;
   unsigned int size;
} __attribute__((__packed__));

size_t dp_fmd_get_data(char *data, int length, unsigned char **ret){
   struct dp_fmd_data *buf;
   size_t buflen;
   buflen = sizeof(*buf) + length;
   buf = malloc(buflen);
   if (!buf)
      return 0;

   *ret = (unsigned char *) buf;
   buf->size = length;
   buf->data = data;
   return buflen;
}

gracias por la ayuda de todas formas :), soy newbie en C y la verdad es que me cuesta trabajar con punteros y cosas de memoria n_n