summaryrefslogtreecommitdiff
path: root/plugins/Db3x_mmap/src
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2012-07-28 12:35:00 +0000
committerGeorge Hazan <george.hazan@gmail.com>2012-07-28 12:35:00 +0000
commita7001dfd139fbb9d5cf5434fc40370f8da0cf04c (patch)
tree844416b2bc429054557bda440e75f466f1e30bf7 /plugins/Db3x_mmap/src
parentd5defc979cd71a5f2bb5176382fa2f5f50f23d1b (diff)
perversive error reporting schema in DATABASELINK removed
git-svn-id: http://svn.miranda-ng.org/main/trunk@1223 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/Db3x_mmap/src')
-rw-r--r--plugins/Db3x_mmap/src/commonheaders.h1
-rw-r--r--plugins/Db3x_mmap/src/init.cpp55
2 files changed, 22 insertions, 34 deletions
diff --git a/plugins/Db3x_mmap/src/commonheaders.h b/plugins/Db3x_mmap/src/commonheaders.h
index 8fe5b1f87f..a0ad519e4d 100644
--- a/plugins/Db3x_mmap/src/commonheaders.h
+++ b/plugins/Db3x_mmap/src/commonheaders.h
@@ -36,6 +36,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include <io.h>
#include <string.h>
#include <direct.h>
+#include <memory>
#ifndef __GNUC__
#include <crtdbg.h>
#endif
diff --git a/plugins/Db3x_mmap/src/init.cpp b/plugins/Db3x_mmap/src/init.cpp
index d1ad13f859..2e2490dc66 100644
--- a/plugins/Db3x_mmap/src/init.cpp
+++ b/plugins/Db3x_mmap/src/init.cpp
@@ -46,32 +46,23 @@ LIST<CDb3Mmap> g_Dbs(1, (LIST<CDb3Mmap>::FTSortFunc)HandleKeySort);
/////////////////////////////////////////////////////////////////////////////////////////
// returns 0 if the profile is created, EMKPRF*
-static int makeDatabase(const TCHAR *profile, int *error)
+static int makeDatabase(const TCHAR *profile)
{
- CDb3Mmap *tmp = new CDb3Mmap(profile);
- if (tmp->Create() == ERROR_SUCCESS) {
- tmp->CreateDbHeaders();
- delete tmp;
- return 0;
- }
- delete tmp;
- if (error != NULL) *error = EMKPRF_CREATEFAILED;
- return 1;
+ std::auto_ptr<CDb3Mmap> db( new CDb3Mmap(profile));
+ if (db->Create() != ERROR_SUCCESS)
+ return EMKPRF_CREATEFAILED;
+
+ return db->CreateDbHeaders();
}
// returns 0 if the given profile has a valid header
-static int grokHeader(const TCHAR *profile, int *error)
+static int grokHeader(const TCHAR *profile)
{
- CDb3Mmap *tmp = new CDb3Mmap(profile);
- if (tmp->Load(true) != ERROR_SUCCESS) {
- delete tmp;
- if (error != NULL) *error = EGROKPRF_CANTREAD;
- return 1;
- }
+ std::auto_ptr<CDb3Mmap> db( new CDb3Mmap(profile));
+ if (db->Load(true) != ERROR_SUCCESS)
+ return EGROKPRF_CANTREAD;
- *error = tmp->CheckDbHeaders();
- delete tmp;
- return (*error == 0) ? 0 : 1;
+ return db->CheckDbHeaders();
}
// returns 0 if all the APIs are injected otherwise, 1
@@ -80,14 +71,12 @@ static MIDatabase* LoadDatabase(const TCHAR *profile)
// set the memory, lists & UTF8 manager
mir_getLP( &pluginInfo );
- CDb3Mmap* db = new CDb3Mmap(profile);
- if (db->Load(false) != ERROR_SUCCESS) {
- delete db;
+ std::auto_ptr<CDb3Mmap> db( new CDb3Mmap(profile));
+ if (db->Load(false) != ERROR_SUCCESS)
return NULL;
- }
- g_Dbs.insert(db);
- return db;
+ g_Dbs.insert(db.get());
+ return db.release();
}
static int UnloadDatabase(MIDatabase* db)
@@ -97,24 +86,22 @@ static int UnloadDatabase(MIDatabase* db)
return 0;
}
-MIDatabaseChecker* CheckDb(const TCHAR* ptszFileName, int *error)
+MIDatabaseChecker* CheckDb(const TCHAR* profile, int *error)
{
- CDb3Mmap *tmp = new CDb3Mmap(ptszFileName);
- if (tmp->Load(true) != ERROR_SUCCESS) {
- delete tmp;
- if (error != NULL) *error = EGROKPRF_CANTREAD;
+ std::auto_ptr<CDb3Mmap> db( new CDb3Mmap(profile));
+ if (db->Load(true) != ERROR_SUCCESS) {
+ *error = EGROKPRF_CANTREAD;
return NULL;
}
- int chk = tmp->CheckDbHeaders();
+ int chk = db->CheckDbHeaders();
if (chk != ERROR_SUCCESS) {
- delete tmp;
*error = chk;
return NULL;
}
*error = 0;
- return tmp;
+ return db.release();
}
static DATABASELINK dblink =