]> 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 6af849229891b3f1ce5ee4f8f928e4972ec204e3..747c601e5d01570df84e70135d21e8e2be718dc8 100644 (file)
@@ -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();
        }