]> git.mxchange.org Git - quix0rs-blobwars.git/blobdiff - src/CReplayData.cpp
Fix all issues found by the Clang Static Analyzer.
[quix0rs-blobwars.git] / src / CReplayData.cpp
index 218fff1967b63efcc4d59703ee7644f84624cff4..747c601e5d01570df84e70135d21e8e2be718dc8 100644 (file)
@@ -13,7 +13,7 @@ ReplayData::ReplayData()
        header.version = VERSION;
        header.release = RELEASE;
        
-       strcpy(filename, "");
+       filename[0] = 0;
 }
 
 ReplayData::~ReplayData()
@@ -22,7 +22,12 @@ ReplayData::~ReplayData()
        {
                save();
                rewind(fp);
-               fwrite(&header, sizeof(ReplayDataHeader), 1, fp);
+               int size = fwrite(&header, sizeof(ReplayDataHeader), 1, fp);
+               if (size != 1)
+               {
+                       printf("Error saving replay data: %s\n", strerror(errno));
+                       exit(1);
+               }
        }
        
        if (replayMode != REPLAY_MODE::NONE)
@@ -62,14 +67,14 @@ void ReplayData::setMode(REPLAY_MODE::TYPE replayMode)
                if (!fp)
                {
                        printf("ERROR: Replay file '%s' could not be loaded.\n", filename);
-                       replayMode = REPLAY_MODE::NONE;
+                       this->replayMode = REPLAY_MODE::NONE;
                        return;
                }
                
                if (fread(&header, sizeof(ReplayDataHeader), 1, fp) != 1)
                {
                        printf("ERROR: Replay file '%s' is corrupt\n", filename);
-                       replayMode = REPLAY_MODE::NONE;
+                       this->replayMode = REPLAY_MODE::NONE;
                        fclose(fp);
                        return;
                }
@@ -92,13 +97,21 @@ void ReplayData::setMode(REPLAY_MODE::TYPE replayMode)
                if (!fp)
                {
                        printf("ERROR: Replay file '%s' could not be opened for writing.\n", filename);
-                       replayMode = REPLAY_MODE::NONE;
+                       this->replayMode = REPLAY_MODE::NONE;
                        return;
                }
                
                swapHeaderEndians();
                
-               fwrite(&header, sizeof(ReplayDataHeader), 1, fp);
+               int size = fwrite(&header, sizeof(ReplayDataHeader), 1, fp);
+               if (size != 1)
+               {
+                       printf("Error writing replay data header: %s\n", strerror(errno));
+                       this->replayMode = REPLAY_MODE::NONE;
+                       fclose(fp);
+                       fp = NULL;
+                       return;
+               }
                
                reset();
        }