142 lines
3 KiB
C
142 lines
3 KiB
C
--- linclassif.c.orig 2010-05-05 08:55:55.000000000 -0400
|
|
+++ linclassif.c 2011-10-06 05:11:23.000000000 -0400
|
|
@@ -62,7 +62,7 @@
|
|
uint32_t i, j;
|
|
int len;
|
|
int recognized;
|
|
- int exitflag = 0;
|
|
+ int exitflag = 1;
|
|
int verb;
|
|
int binary_problem;
|
|
int output_type;
|
|
@@ -101,6 +101,8 @@
|
|
feat_idx = NULL;
|
|
W = NULL;
|
|
W0 = 0;
|
|
+ input_fname = NULL;
|
|
+ model_fname = NULL;
|
|
output_fname = NULL;
|
|
nClassErrors = NULL;
|
|
nClass = NULL;
|
|
@@ -275,6 +277,7 @@
|
|
if(fgets(line,LIBSLF_MAXLINELEN, fid) == NULL )
|
|
{
|
|
fprintf(stderr,"Empty example file.\n");
|
|
+ fclose(fid);
|
|
goto clean_up;
|
|
}
|
|
else
|
|
@@ -312,6 +315,7 @@
|
|
if( tmp_nCols != nCols)
|
|
{
|
|
fprintf(stderr,"Error: Model file contains lines with different number of colums.\n");
|
|
+ fclose(fid);
|
|
goto clean_up;
|
|
}
|
|
|
|
@@ -340,6 +344,7 @@
|
|
if(W == NULL)
|
|
{
|
|
fprintf(stderr,"Not enough memory for vector W.\n");
|
|
+ fclose(fid);
|
|
goto clean_up;
|
|
}
|
|
|
|
@@ -355,6 +360,7 @@
|
|
if(fgets(line,LIBSLF_MAXLINELEN, fid) == NULL )
|
|
{
|
|
fprintf(stderr,"Model file corrupted.\n");
|
|
+ fclose(fid);
|
|
goto clean_up;
|
|
}
|
|
|
|
@@ -364,6 +370,7 @@
|
|
if(val == 0 && begptr == endptr)
|
|
{
|
|
fprintf(stderr,"Model file corrupted.\n");
|
|
+ fclose(fid);
|
|
goto clean_up;
|
|
}
|
|
|
|
@@ -388,6 +395,7 @@
|
|
if(W == NULL)
|
|
{
|
|
fprintf(stderr,"Not enough memory for matrix W.\n");
|
|
+ fclose(fid);
|
|
goto clean_up;
|
|
}
|
|
|
|
@@ -403,6 +411,7 @@
|
|
if(fgets(line,LIBSLF_MAXLINELEN, fid) == NULL )
|
|
{
|
|
fprintf(stderr,"Model file corrupted.\n");
|
|
+ fclose(fid);
|
|
goto clean_up;
|
|
}
|
|
|
|
@@ -414,6 +423,7 @@
|
|
if(val == 0 && begptr == endptr)
|
|
{
|
|
fprintf(stderr,"Model file corrupted.\n");
|
|
+ fclose(fid);
|
|
goto clean_up;
|
|
}
|
|
begptr = endptr;
|
|
@@ -458,7 +468,7 @@
|
|
else
|
|
{
|
|
fout = fopen(output_fname, "w+");
|
|
- if(fid == NULL) {
|
|
+ if(fout == NULL) {
|
|
fprintf(stderr,"Cannot open output file.\n");
|
|
perror("fopen error ");
|
|
fclose(fid);
|
|
@@ -478,6 +488,9 @@
|
|
if(nClassErrors == NULL)
|
|
{
|
|
fprintf(stderr,"Not enough memory for vector nClassError.\n");
|
|
+ fclose(fid);
|
|
+ if(output_fname != NULL)
|
|
+ fclose(fout);
|
|
goto clean_up;
|
|
}
|
|
|
|
@@ -485,6 +498,9 @@
|
|
if(nClass == NULL)
|
|
{
|
|
fprintf(stderr,"Not enough memory for vector nClass.\n");
|
|
+ fclose(fid);
|
|
+ if(output_fname != NULL)
|
|
+ fclose(fout);
|
|
goto clean_up;
|
|
}
|
|
|
|
@@ -505,6 +521,9 @@
|
|
{
|
|
fprintf(stderr,"Parsing error on line %ld .\n", line_cnt);
|
|
fprintf(stderr,"Probably defective input file.\n");
|
|
+ fclose(fid);
|
|
+ if(output_fname != NULL)
|
|
+ fclose(fout);
|
|
goto clean_up;
|
|
}
|
|
|
|
@@ -612,12 +631,16 @@
|
|
|
|
|
|
fclose(fid);
|
|
- fclose(fout);
|
|
+ if(output_fname != NULL)
|
|
+ fclose(fout);
|
|
|
|
- exitflag = 1;
|
|
+ exitflag = 0;
|
|
|
|
clean_up:
|
|
|
|
+ free(input_fname);
|
|
+ free(model_fname);
|
|
+ free(output_fname);
|
|
free(W);
|
|
free(line);
|
|
free(feat_val);
|