about summary refs log tree commit diff
path: root/entry.c
diff options
context:
space:
mode:
Diffstat (limited to 'entry.c')
-rw-r--r--entry.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/entry.c b/entry.c
index 5714978..756a62e 100644
--- a/entry.c
+++ b/entry.c
@@ -190,21 +190,26 @@ int entry_get_text(struct entry *entry) {
     return 0;
 }
 
-void free_entry(struct entry entry) {
-    if(entry.path != NULL) {
-        free(entry.path);
+void entry_unget_text(struct entry *entry) {
+    if(entry->text_size > 0 && entry->text != NULL &&
+       munmap(entry->text, entry->text_size) != -1) {
+        entry->text_size = -1;
+        entry->text = NULL;
     }
+}
 
-    if(entry.link != NULL) {
-        free(entry.link);
+void free_entry(struct entry *entry) {
+    if(entry->path != NULL) {
+        free(entry->path);
     }
 
-    if(entry.title != NULL) {
-        free(entry.title);
+    if(entry->link != NULL) {
+        free(entry->link);
     }
 
-    if(entry.text != NULL) {
-        // TODO return value
-        munmap(entry.text, entry.text_size);
+    if(entry->title != NULL) {
+        free(entry->title);
     }
+
+    entry_get_text(entry);
 }