diff src/modplug/archive/arch_gzip.cxx @ 963:9549fea94794 trunk

[svn] Warning fixes from SuSe.
author chainsaw
date Tue, 17 Apr 2007 14:45:19 -0700
parents 3da1b8942b8b
children
line wrap: on
line diff
--- a/src/modplug/archive/arch_gzip.cxx	Mon Apr 16 01:35:24 2007 -0700
+++ b/src/modplug/archive/arch_gzip.cxx	Tue Apr 17 14:45:19 2007 -0700
@@ -37,9 +37,22 @@
 	}
 	
 	char line[81];
-	fgets(line, 80, f);   // ignore a line.
-	fscanf(f, "%u", &mSize); // ignore first number.
-	fscanf(f, "%u", &mSize); // keep second number.
+	if(!fgets(line, 80, f)){   // ignore a line.
+		mSize = 0;
+		pclose(f);
+		return;
+	}
+	if(fscanf(f, "%u", &mSize) != 1){  // ignore first number.
+		mSize = 0;
+		pclose(f);
+		return;
+	}
+
+	if (fscanf(f, "%u", &mSize) != 1){; // keep second number.
+		mSize = 0;
+		pclose(f);
+		return;
+	}
 	
 	pclose(f);
 	
@@ -59,7 +72,8 @@
 		return;
 	}
 
-	fread((char *)mMap, sizeof(char), mSize, f);
+	if(fread((char *)mMap, sizeof(char), mSize, f) != mSize)
+		mSize = 0;
 
 	pclose(f);
 	
@@ -93,11 +107,26 @@
 	}
 	
 	char line[300];
-	fgets(line, 80, f);   // ignore a line.
-	fscanf(f, "%i", &num); // ignore first number
-	fscanf(f, "%i", &num); // ignore second number
-	fscanf(f, "%f%%", &fnum); // ignore ratio
-	fgets(line, 300, f);   // read in correct line safely.
+	if(!fgets(line, 80, f)){   // ignore a line.
+		pclose(f);
+		return false;
+	}	
+	if(fscanf(f, "%i", &num) != 1){ // ignore first number
+		pclose(f);
+		return false;
+	}
+	if(fscanf(f, "%i", &num) != 1){ // ignore second number
+		pclose(f);
+		return false;
+	}
+	if(fscanf(f, "%f%%", &fnum) != 1){ // ignore ratio
+		pclose(f);
+		return false;
+	}
+	if(!fgets(line, 300, f)){   // read in correct line safely.
+		pclose(f);
+		return false;
+	}
 	if (strlen(line) > 1)
 		line[strlen(line)-1] = 0;
 	lName = line;