From: Gerd von Egidy Date: Tue, 9 Mar 2010 18:01:25 +0000 (+0100) Subject: fix Stat::recheck(), seems like noone ever tested it... X-Git-Tag: v2.6~112^2~12 X-Git-Url: http://developer.intra2net.com/git/?a=commitdiff_plain;h=96fe2dc5b259d02a1e1a6f24f4a6583a2b653296;p=libi2ncommon fix Stat::recheck(), seems like noone ever tested it... --- 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) {