From 5666e57db9792d5e2f4faf89599812a570b39b96 Mon Sep 17 00:00:00 2001 From: ultramage Date: Thu, 16 Jun 2011 17:01:09 +0000 Subject: Fixed DBMap's db_dup_key to allocate only as much as necessary (bugreport:4969). This reduces default eA's memory usage by about 400kB. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14853 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/common/db.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src/common/db.c') diff --git a/src/common/db.c b/src/common/db.c index 935fe472f..5622a2433 100644 --- a/src/common/db.c +++ b/src/common/db.c @@ -631,19 +631,19 @@ static int db_is_key_null(DBType type, DBKey key) static DBKey db_dup_key(DBMap_impl* db, DBKey key) { char *str; + size_t len; + unsigned short maxlen; DB_COUNTSTAT(db_dup_key); switch (db->type) { case DB_STRING: case DB_ISTRING: - if (db->maxlen) { - CREATE(str, char, db->maxlen +1); - strncpy(str, key.str, db->maxlen); - str[db->maxlen] = '\0'; - key.str = str; - } else { - key.str = (char *)aStrdup(key.str); - } + maxlen = ( db->maxlen != 0 ) ? db->maxlen : UINT16_MAX; + len = strnlen(key.str, maxlen); + str = (char*)aMalloc(len + 1); + memcpy(str, key.str, len); + str[len] = '\0'; + key.str = str; return key; default: -- cgit v1.2.3-70-g09d2