about summary refs log tree commit diff stats
path: root/src/log.c
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2013-09-23 01:05:07 +0100
committerJames Booth <boothj5@gmail.com>2013-09-23 01:05:07 +0100
commit25b274b8d1b322121edcfa4bf4cff6f03b9c820e (patch)
tree6eded58c6e9aa4954bc8edbdbdd44ab53888f7d9 /src/log.c
parentcb507497b63c4a7f16792d76f28af967099ceb41 (diff)
downloadprofani-tty-25b274b8d1b322121edcfa4bf4cff6f03b9c820e.tar.gz
Fixed memory leaks in chat logs
issue #226
Diffstat (limited to 'src/log.c')
-rw-r--r--src/log.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/log.c b/src/log.c
index 14d801a9..5a278872 100644
--- a/src/log.c
+++ b/src/log.c
@@ -214,18 +214,17 @@ void
 chat_log_chat(const gchar * const login, gchar *other,
     const gchar * const msg, chat_log_direction_t direction, GTimeVal *tv_stamp)
 {
-    gchar *other_copy = strdup(other);
-    struct dated_chat_log *dated_log = g_hash_table_lookup(logs, other_copy);
+    struct dated_chat_log *dated_log = g_hash_table_lookup(logs, other);
 
     // no log for user
     if (dated_log == NULL) {
-        dated_log = _create_log(other_copy, login);
-        g_hash_table_insert(logs, other_copy, dated_log);
+        dated_log = _create_log(other, login);
+        g_hash_table_insert(logs, strdup(other), dated_log);
 
     // log exists but needs rolling
     } else if (_log_roll_needed(dated_log)) {
-        dated_log = _create_log(other_copy, login);
-        g_hash_table_replace(logs, other_copy, dated_log);
+        dated_log = _create_log(other, login);
+        g_hash_table_replace(logs, strdup(other), dated_log);
     }
 
     gchar *date_fmt = NULL;
@@ -242,9 +241,9 @@ chat_log_chat(const gchar * const login, gchar *other,
 
     if (direction == PROF_IN_LOG) {
         if (strncmp(msg, "/me ", 4) == 0) {
-            fprintf(logp, "%s - *%s %s\n", date_fmt, other_copy, msg + 4);
+            fprintf(logp, "%s - *%s %s\n", date_fmt, other, msg + 4);
         } else {
-            fprintf(logp, "%s - %s: %s\n", date_fmt, other_copy, msg);
+            fprintf(logp, "%s - %s: %s\n", date_fmt, other, msg);
         }
     } else {
         if (strncmp(msg, "/me ", 4) == 0) {
@@ -413,8 +412,8 @@ _free_chat_log(struct dated_chat_log *dated_log)
             g_date_time_unref(dated_log->date);
             dated_log->date = NULL;
         }
+        free(dated_log);
     }
-    dated_log = NULL;
 }
 
 static
@@ -450,6 +449,7 @@ _get_log_filename(const char * const other, const char * const login,
 
     gchar *date = g_date_time_format(dt, "/%Y_%m_%d.log");
     g_string_append(log_file, date);
+    g_free(date);
 
     char *result = strdup(log_file->str);
     g_string_free(log_file, TRUE);