mgetl: fix trouble with 'continuous' read on Windows 91/20891/4
Antoine ELIAS [Wed, 27 Feb 2019 23:45:46 +0000 (00:45 +0100)]
Change-Id: I2cbbf601bd78f794f254e3de7f7b5f5eeb216cc1

scilab/modules/fileio/src/cpp/mgetl.cpp
scilab/modules/fileio/tests/unit_tests/mgetl.tst

index 7d6a2b6..e1bd129 100644 (file)
@@ -90,11 +90,11 @@ int mgetl(int iFileID, int iLineCount, wchar_t*** pwstLines)
     char* name = wide_string_to_UTF8(wname.data());
     std::ifstream ifs(name);
     FREE(name);
+    //seek to same position
+    ifs.seekg(orig);
 #else
     std::ifstream ifs(fd);
 #endif
-    //seek to same position
-    ifs.seekg(orig);
 
 #define MAX_READ_LEN 262144
     char str[MAX_READ_LEN];
index 7db3c5c..9fad15d 100644 (file)
@@ -126,8 +126,8 @@ assert_checkequal(ierr, 999);
 //test long file with CRLF
 tmp = tempname();
 fd = mopen(tmp, "wb");
-txt = "a":"z"
-for i = 1:10000;
+txt = "a":"z";
+for i = 1:10000
     mfprintf(fd, "%s %s %s %s %s %s %s %s %s %s" + ascii(13) + ascii(10), txt, txt, txt, txt, txt, txt, txt, txt, txt, txt);
 end
 mclose(fd);
@@ -137,10 +137,20 @@ assert_checktrue(length(x) == 27 * 10 - 1);
 //test long file with LF
 tmp = tempname();
 fd = mopen(tmp, "wb");
-txt = "a":"z"
-for i = 1:10000;
+txt = "a":"z";
+for i = 1:10000
     mfprintf(fd, "%s %s %s %s %s %s %s %s %s %s" + ascii(10), txt, txt, txt, txt, txt, txt, txt, txt, txt, txt);
 end
 mclose(fd);
 x = mgetl(tmp);
 assert_checktrue(length(x) == 27 * 10 - 1);
+
+fd = mopen(tmp, "rt");
+x = mgetl(fd, 1);
+
+for i = 1:(10000-1)
+    y = mgetl(fd, 1);
+    assert_checkequal(x, y);
+end
+
+mclose(fd);