The code compiles but I get a Kern_Protection_Failure and fails at the fread.
Suggestions? Thanks
typedef struct matchedfilter{
int col;
int row;
float ** filters;
} matchedfilter;
struct dirent *filterfile;
DIR *ld;
matchedfilter *mfilters;
int filtnum = 0;
FILE * fp;
char * filename;
ld = (DIR *) calloc (1, sizeof(DIR));
mfilters = (matchedfilter *)calloc(LENSLETS_SIZE*LENSLETS_SIZE, sizeof(matchedfilter));
filename = (char*) calloc(25, sizeof(char));
ld = opendir(filterdir);
while ( (filterfile = readdir(ld)) != NULL)
{
if ( strstr(filterfile->d_name, "txt") != NULL)
{
strcpy(filename,filterdir);
strcat(filename,filterfile->d_name);
if (fp = fopen(filename, "r") != NULL)
{
printf("%s\n", filename);
sscanf(filterfile->d_name, "%d-%d.txt", &col, &row);
mfilters[filtnum].col = col;
mfilters[filtnum].row = row;
mfilters[filtnum].filters= (float **)malloc(NWAVES * sizeof(float *));
for (j = 0; j < NWAVES; j++)
{
if (mfilters[filtnum].filters[j] = (float *)malloc((12 + 3*j) * sizeof(float)) != NULL);
fread(mfilters[filtnum].filters[j], 1, (12 + 3*j)*sizeof(float), fp);
}
}
}
filtnum++;
}
printf("%d\n", filtnum);
Suggestions? Thanks
typedef struct matchedfilter{
int col;
int row;
float ** filters;
} matchedfilter;
struct dirent *filterfile;
DIR *ld;
matchedfilter *mfilters;
int filtnum = 0;
FILE * fp;
char * filename;
ld = (DIR *) calloc (1, sizeof(DIR));
mfilters = (matchedfilter *)calloc(LENSLETS_SIZE*LENSLETS_SIZE, sizeof(matchedfilter));
filename = (char*) calloc(25, sizeof(char));
ld = opendir(filterdir);
while ( (filterfile = readdir(ld)) != NULL)
{
if ( strstr(filterfile->d_name, "txt") != NULL)
{
strcpy(filename,filterdir);
strcat(filename,filterfile->d_name);
if (fp = fopen(filename, "r") != NULL)
{
printf("%s\n", filename);
sscanf(filterfile->d_name, "%d-%d.txt", &col, &row);
mfilters[filtnum].col = col;
mfilters[filtnum].row = row;
mfilters[filtnum].filters= (float **)malloc(NWAVES * sizeof(float *));
for (j = 0; j < NWAVES; j++)
{
if (mfilters[filtnum].filters[j] = (float *)malloc((12 + 3*j) * sizeof(float)) != NULL);
fread(mfilters[filtnum].filters[j], 1, (12 + 3*j)*sizeof(float), fp);
}
}
}
filtnum++;
}
printf("%d\n", filtnum);