Usando olly encuentro que el problema de este codigo me lo da con el 'realloc', en la primera vuelta del bucle funciona bien, pero en la segunda se va todo al garete
Estoy usando bien el realloc??
Código:
struct st_files {
char filename[80]; // se supone que el nombre de un archivo no superan los 80 caracteres... es un test
unsigned long filesize;
};
int getFilesDirectoryTest(st_files **files, const char *path) {
WIN32_FIND_DATA FindFileData;
HANDLE hFind = INVALID_HANDLE_VALUE;
hFind = FindFirstFile(LPCSTR(path), &FindFileData);
if (hFind == INVALID_HANDLE_VALUE) {
// Error...
return -1;
} else {
int aux = 0; // Numero de archivos en el directorio
*files = (st_files*) calloc(1,sizeof(st_files));
do {
if (strcmp(FindFileData.cFileName, ".") != 0 &&
strcmp(FindFileData.cFileName, "..") != 0 ){
st_files *sTemp = (st_files*) realloc( * files, (aux+1) * sizeof( struct st_files));
if (sTemp == NULL) return -1;
*files = sTemp;
strcpy(files[aux]->filename, FindFileData.cFileName);
files[aux]->filesize = 2; // por poner un ejemplo....
aux++;
}
} while(FindNextFile(hFind, &FindFileData) != 0);
FindClose(hFind);
return aux;
}
}
int main() {
const char *path = "C:\\test\\*";
st_files *files1;
int total = getFilesDirectoryTest(&files1, path);
for (int i = 0; i<total; i++) {
debug_(files1[i].filesize);
debug_(files1[i].filename);
}
}