From 96fe2dc5b259d02a1e1a6f24f4a6583a2b653296 Mon Sep 17 00:00:00 2001 From: Gerd von Egidy Date: Tue, 9 Mar 2010 19:01:25 +0100 Subject: [PATCH] fix Stat::recheck(), seems like noone ever tested it... --- src/filefunc.cpp | 3 ++- test/test_filefunc.cpp | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletions(-) diff --git a/src/filefunc.cpp b/src/filefunc.cpp index 469b2b3..c0995e6 100644 --- a/src/filefunc.cpp +++ b/src/filefunc.cpp @@ -63,7 +63,8 @@ void Stat::recheck() { if (! Path.empty()) { - stat(Path, FollowLinks); + // pass a copy of Path: otherwise clear() would leave an empty reference + stat(string(Path), FollowLinks); } } // eo Stat::recheck() diff --git a/test/test_filefunc.cpp b/test/test_filefunc.cpp index 2ca37b0..f00e0f5 100644 --- a/test/test_filefunc.cpp +++ b/test/test_filefunc.cpp @@ -95,6 +95,23 @@ BOOST_AUTO_TEST_CASE(StatTest1) BOOST_CHECK_EQUAL( false, stat.is_block_device() ); } // eo StatTest1 +BOOST_AUTO_TEST_CASE(StatRecheck) +{ + // just to be sure + unlink(".foobar"); + + I2n::Stat stat(".foobar"); + BOOST_CHECK_EQUAL( false, (bool)stat ); + + write_file(".foobar","hello world"); + + stat.recheck(); + + BOOST_CHECK_EQUAL( true, (bool)stat ); + BOOST_CHECK_EQUAL( true, stat.size() > 0 ); + + unlink(".foobar"); +} BOOST_AUTO_TEST_CASE(DirTest1) { -- 1.7.1