diff --git a/cfg/gnu.cfg b/cfg/gnu.cfg new file mode 100644 index 000000000..04dc7570b --- /dev/null +++ b/cfg/gnu.cfg @@ -0,0 +1,7 @@ + + + + free + get_current_dir_name + + diff --git a/test/testmemleak.cpp b/test/testmemleak.cpp index 4a08a6f5c..d931dfea1 100644 --- a/test/testmemleak.cpp +++ b/test/testmemleak.cpp @@ -369,6 +369,8 @@ private: // test that the cfg files are configured correctly TEST_CASE(posixcfg); TEST_CASE(posixcfg_mmap); + + TEST_CASE(gnucfg); } std::string getcode(const char code[], const char varname[], bool classfunc=false) { @@ -4272,6 +4274,21 @@ private: ASSERT_EQUALS("[test.cpp:5]: (error) Memory leak: p\n", errout.str()); } + void gnucfg() { + Settings settings; + settings.standards.posix = true; + LOAD_LIB_2(settings.library, "gnu.cfg"); + const char code[] = "void leak() {\n" + " char * p = get_current_dir_name();\n" // memory leak + "}\n" + "void noLeak() {\n" + " char * p = get_current_dir_name;\n" + " free(p)\n;" + "}"; + check(code, &settings); + ASSERT_EQUALS("[test.cpp:3]: (error) Memory leak: p\n", errout.str()); + } + // Test that posix.cfg is configured correctly void posixcfg() { Settings settings;