diff --git a/lib/library.cpp b/lib/library.cpp index 1fece701b..341ca15e2 100644 --- a/lib/library.cpp +++ b/lib/library.cpp @@ -75,8 +75,11 @@ bool Library::load(const tinyxml2::XMLDocument &doc) return false; for (const tinyxml2::XMLElement *node = rootnode->FirstChildElement(); node; node = node->NextSiblingElement()) { - if (strcmp(node->Name(),"memory")==0) { - while (!ismemory(++allocid)); + if (strcmp(node->Name(),"memory")==0 || strcmp(node->Name(),"resource")==0) { + if (strcmp(node->Name(), "memory")==0) + while (!ismemory(++allocid)); + else + while (!isresource(++allocid)); for (const tinyxml2::XMLElement *memorynode = node->FirstChildElement(); memorynode; memorynode = memorynode->NextSiblingElement()) { if (strcmp(memorynode->Name(),"alloc")==0) { _alloc[memorynode->GetText()] = allocid; diff --git a/test/testlibrary.cpp b/test/testlibrary.cpp index 74f958245..06537cf85 100644 --- a/test/testlibrary.cpp +++ b/test/testlibrary.cpp @@ -30,6 +30,7 @@ private: TEST_CASE(function); TEST_CASE(function_arg); TEST_CASE(memory); + TEST_CASE(resource); } void empty() { @@ -111,6 +112,27 @@ private: ASSERT(Library::ismemory(library.alloc("CreateX"))); ASSERT_EQUALS(library.alloc("CreateX"), library.dealloc("DeleteX")); } + + void resource() { + const char xmldata[] = "\n" + "\n" + " \n" + " CreateX\n" + " DeleteX\n" + " \n" + ""; + tinyxml2::XMLDocument doc; + doc.Parse(xmldata, sizeof(xmldata)); + + Library library; + library.load(doc); + ASSERT(library.use.empty()); + ASSERT(library.leakignore.empty()); + ASSERT(library.argumentChecks.empty()); + + ASSERT(Library::isresource(library.alloc("CreateX"))); + ASSERT_EQUALS(library.alloc("CreateX"), library.dealloc("DeleteX")); + } }; REGISTER_TEST(TestLibrary)