summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/Makefile.am1
-rw-r--r--src/utils/physfscheckutils.cpp30
-rw-r--r--src/utils/physfsmemoryobject.h45
4 files changed, 56 insertions, 21 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index cc771d49b..06f21b243 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -653,6 +653,7 @@ SET(SRCS
utils/perfomance.h
utils/physfscheckutils.cpp
utils/physfscheckutils.h
+ utils/physfsmemoryobject.h
utils/physfsrwops.cpp
utils/physfsrwops.h
utils/physfstools.cpp
diff --git a/src/Makefile.am b/src/Makefile.am
index 1f1e24f2f..f32d0fabb 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -761,6 +761,7 @@ manaplus_SOURCES += gui/widgets/avatarlistbox.cpp \
utils/perfomance.h \
utils/physfscheckutils.cpp \
utils/physfscheckutils.h \
+ utils/physfsmemoryobject.h \
utils/physfsrwops.cpp \
utils/physfsrwops.h \
utils/physfstools.cpp \
diff --git a/src/utils/physfscheckutils.cpp b/src/utils/physfscheckutils.cpp
index 103726e19..68e636e9e 100644
--- a/src/utils/physfscheckutils.cpp
+++ b/src/utils/physfscheckutils.cpp
@@ -26,6 +26,7 @@
#include "utils/stringutils.h"
+#include "utils/physfsmemoryobject.h"
#include "utils/physfsrwops.h"
#include <map>
@@ -34,21 +35,7 @@
namespace
{
- struct MemoryObject
- {
- MemoryObject(const char *const name,
- const char *const file,
- const unsigned int line) :
- mName(name),
- mAddFile(strprintf("%s:%u", file, line))
- {
- }
-
- std::string mName;
- std::string mAddFile;
- };
-
- std::map<void*, MemoryObject*> mRWops;
+ std::map<void*, PHYSFSMemoryObject*> mRWops;
} // namespace
static SDL_RWops *addRWops(SDL_RWops *restrict const rwops,
@@ -59,7 +46,7 @@ static SDL_RWops *addRWops(SDL_RWops *restrict const rwops,
if (!rwops)
return nullptr;
- mRWops[rwops] = new MemoryObject(name, file, line);
+ mRWops[rwops] = new PHYSFSMemoryObject(name, file, line);
return rwops;
}
@@ -68,14 +55,14 @@ static void deleteRWops(SDL_RWops *const rwops)
if (!rwops)
return;
- std::map<void*, MemoryObject*>::iterator it = mRWops.find(rwops);
+ std::map<void*, PHYSFSMemoryObject*>::iterator it = mRWops.find(rwops);
if (it == mRWops.end())
{
logger->log("bad RWops delete: %p", static_cast<void*>(rwops));
}
else
{
- MemoryObject *const obj = (*it).second;
+ PHYSFSMemoryObject *const obj = (*it).second;
if (obj)
{
mRWops.erase(rwops);
@@ -101,11 +88,12 @@ void reportPhysfsLeaks()
if (!mRWops.empty())
{
logger->log("RWops leaks detected");
- std::map<void*, MemoryObject*>::iterator it = mRWops.begin();
- const std::map<void*, MemoryObject*>::iterator it_end = mRWops.end();
+ std::map<void*, PHYSFSMemoryObject*>::iterator it = mRWops.begin();
+ const std::map<void*, PHYSFSMemoryObject*>::iterator
+ it_end = mRWops.end();
for (; it != it_end; ++it)
{
- MemoryObject *obj = (*it).second;
+ PHYSFSMemoryObject *obj = (*it).second;
if (obj)
{
logger->log("file: %s at %s", obj->mName.c_str(),
diff --git a/src/utils/physfsmemoryobject.h b/src/utils/physfsmemoryobject.h
new file mode 100644
index 000000000..f19c6cac1
--- /dev/null
+++ b/src/utils/physfsmemoryobject.h
@@ -0,0 +1,45 @@
+/*
+ * The ManaPlus Client
+ * Copyright (C) 2013-2014 The ManaPlus Developers
+ *
+ * This file is part of The ManaPlus Client.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef UTILS_PHYSFSMEMORYOBJECT_H
+#define UTILS_PHYSFSMEMORYOBJECT_H
+
+#ifdef DEBUG_PHYSFS
+
+#include <string>
+
+#include "localconsts.h"
+
+struct PHYSFSMemoryObject final
+{
+ PHYSFSMemoryObject(const char *const name,
+ const char *const file,
+ const unsigned int line) :
+ mName(name),
+ mAddFile(strprintf("%s:%u", file, line))
+ {
+ }
+
+ std::string mName;
+ std::string mAddFile;
+};
+
+#endif // DEBUG_PHYSFS
+#endif // UTILS_PHYSFSMEMORYOBJECT_H