Fixed bug that caused frame_cutter_unittest to fail when built with MVS2008.

This was caused by not supplying a correct pointer to where fread should read. The files are now opened in binary mode (which I have under stood can cause problems between different OS if it is not done). I also check for EOF when I compare data from fread. Previously the checking for correct amount of bytes read failed when the end of the file had been reached.

BUG=

Review URL: https://webrtc-codereview.appspot.com/937032

git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@3212 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/tools/frame_cutter/frame_cutter_lib.cc b/tools/frame_cutter/frame_cutter_lib.cc
index c387cd4..33597bf 100644
--- a/tools/frame_cutter/frame_cutter_lib.cc
+++ b/tools/frame_cutter/frame_cutter_lib.cc
@@ -29,7 +29,7 @@
     return -10;
   }
 
-  FILE* in_fid = fopen(in_path.c_str() , "r");
+  FILE* in_fid = fopen(in_path.c_str() , "rb");
   if (!in_fid) {
     fprintf(stderr, "Could not read input file: %s.\n", in_path.c_str());
     return -11;
@@ -40,7 +40,7 @@
 
   webrtc::scoped_array<uint8_t> temp_buffer(new uint8_t[frame_length]);
 
-  FILE* out_fid = fopen(out_path.c_str(), "w");
+  FILE* out_fid = fopen(out_path.c_str(), "wb");
 
   if (!out_fid) {
     fprintf(stderr, "Could not open output file: %s.\n", out_path.c_str());
diff --git a/tools/frame_cutter/frame_cutter_unittest.cc b/tools/frame_cutter/frame_cutter_unittest.cc
index a58cc3b..ad2b588 100644
--- a/tools/frame_cutter/frame_cutter_unittest.cc
+++ b/tools/frame_cutter/frame_cutter_unittest.cc
@@ -44,9 +44,9 @@
                            last_frame_to_cut, test_video);
   EXPECT_EQ(0, result);
 
-  FILE* ref_video_fid = fopen(ref_video.c_str(), "r");
+  FILE* ref_video_fid = fopen(ref_video.c_str(), "rb");
   ASSERT_TRUE(ref_video_fid != NULL);
-  FILE* test_video_fid = fopen(test_video.c_str(), "r");
+  FILE* test_video_fid = fopen(test_video.c_str(), "rb");
   ASSERT_TRUE(test_video_fid != NULL);
 
   const int frame_size =CalcBufferSize(kI420, width, height);
@@ -55,30 +55,33 @@
   scoped_array<int> test_buffer(new int[frame_size]);
 
   for (int i = 0; i < first_frame_to_cut; ++i) {
-    num_bytes_read = fread(ref_buffer.get(), frame_size, 1, ref_video_fid);
+    num_bytes_read = fread(ref_buffer.get(), 1, frame_size, ref_video_fid);
     EXPECT_EQ(frame_size, num_bytes_read);
 
-    num_bytes_read = fread(test_buffer.get(), frame_size, 1, test_video_fid);
+    num_bytes_read = fread(test_buffer.get(), 1, frame_size, test_video_fid);
     EXPECT_EQ(frame_size, num_bytes_read);
 
     EXPECT_EQ(0, memcmp(ref_buffer.get(), test_buffer.get(), frame_size));
   }
   // Do not compare the frames that have been cut.
   for (int i = first_frame_to_cut; i <= last_frame_to_cut; ++i) {
-    num_bytes_read = fread(&ref_buffer, frame_size, 1, ref_video_fid);
+    num_bytes_read = fread(ref_buffer.get(), 1, frame_size, ref_video_fid);
     EXPECT_EQ(frame_size, num_bytes_read);
   }
 
-  while (!feof(test_video_fid)) {
-    num_bytes_read = fread(&ref_buffer, frame_size, 1, ref_video_fid);
-    EXPECT_EQ(frame_size, num_bytes_read);
-    num_bytes_read = fread(&test_buffer, frame_size, 1, test_video_fid);
-    EXPECT_EQ(frame_size, num_bytes_read);
-    EXPECT_EQ(0, memcmp(ref_buffer.get(), test_buffer.get(), frame_size));
+  while (!feof(test_video_fid) && !feof(ref_video_fid)) {
+    num_bytes_read = fread(ref_buffer.get(), 1, frame_size, ref_video_fid);
+    if (!feof(ref_video_fid)) {
+      EXPECT_EQ(frame_size, num_bytes_read);
+    }
+    num_bytes_read = fread(test_buffer.get(), 1, frame_size, test_video_fid);
+    if (!feof(test_video_fid)) {
+      EXPECT_EQ(frame_size, num_bytes_read);
+    }
+    if (!feof(test_video_fid) && !feof(test_video_fid)) {
+      EXPECT_EQ(0, memcmp(ref_buffer.get(), test_buffer.get(), frame_size));
+    }
   }
-  bool are_both_files_at_the_end =
-      (feof(test_video_fid) && feof(test_video_fid));
-  EXPECT_TRUE(are_both_files_at_the_end);
 }
 
 TEST(FrameCutterUnittest, EmptySetToCut) {