From: Evegeny Vereshchagin Date: Mon, 5 Mar 2018 21:23:33 +0000 (+0000) Subject: tests: stop using `freopen` in `test-fileio` X-Git-Tag: v239~574^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=362973902ca8501cad5e32db3820d7c66486b7a7;p=thirdparty%2Fsystemd.git tests: stop using `freopen` in `test-fileio` This helps get around a bug confusing `glibc` and making the test bail out with the following error under `asan` on `x86`: Fatal error: glibc detected an invalid stdio handle Aborted (core dumped) The bug has been reported in https://github.com/google/sanitizers/issues/778, but it is unlikely to be fixed anytime soon. --- diff --git a/src/test/test-fileio.c b/src/test/test-fileio.c index 286867d2dc2..3b4ee4b92a4 100644 --- a/src/test/test-fileio.c +++ b/src/test/test-fileio.c @@ -406,7 +406,7 @@ static void test_capeff(void) { static void test_write_string_stream(void) { char fn[] = "/tmp/test-write_string_stream-XXXXXX"; - _cleanup_fclose_ FILE *f = NULL; + FILE *f = NULL; int fd; char buf[64]; @@ -416,8 +416,9 @@ static void test_write_string_stream(void) { f = fdopen(fd, "r"); assert_se(f); assert_se(write_string_stream(f, "boohoo", 0) < 0); + f = safe_fclose(f); - f = freopen(fn, "r+", f); + f = fopen(fn, "r+"); assert_se(f); assert_se(write_string_stream(f, "boohoo", 0) == 0); @@ -425,8 +426,9 @@ static void test_write_string_stream(void) { assert_se(fgets(buf, sizeof(buf), f)); assert_se(streq(buf, "boohoo\n")); + f = safe_fclose(f); - f = freopen(fn, "w+", f); + f = fopen(fn, "w+"); assert_se(f); assert_se(write_string_stream(f, "boohoo", WRITE_STRING_FILE_AVOID_NEWLINE) == 0); @@ -435,6 +437,7 @@ static void test_write_string_stream(void) { assert_se(fgets(buf, sizeof(buf), f)); printf(">%s<", buf); assert_se(streq(buf, "boohoo")); + f = safe_fclose(f); unlink(fn); }