Fix #1224: Dragging a keyword to another position causes Geeqie to crash
[geeqie.git] / src / filecache.cc
index d5eaf2e..80ad209 100644 (file)
@@ -26,15 +26,14 @@ const gboolean debug_file_cache = FALSE;
 
 /* this implements a simple LRU algorithm */
 
-struct _FileCacheData {
+struct FileCacheData {
        FileCacheReleaseFunc release;
        GList *list;
        gulong max_size;
        gulong size;
 };
 
-typedef struct _FileCacheEntry FileCacheEntry;
-struct _FileCacheEntry {
+struct FileCacheEntry {
        FileData *fd;
        gulong size;
 };
@@ -44,10 +43,10 @@ static void file_cache_remove_fd(FileCacheData *fc, FileData *fd);
 
 FileCacheData *file_cache_new(FileCacheReleaseFunc release, gulong max_size)
 {
-       FileCacheData *fc = g_new(FileCacheData, 1);
+       auto fc = g_new(FileCacheData, 1);
 
        fc->release = release;
-       fc->list = NULL;
+       fc->list = nullptr;
        fc->max_size = max_size;
        fc->size = 0;
 
@@ -65,7 +64,7 @@ gboolean file_cache_get(FileCacheData *fc, FileData *fd)
        work = fc->list;
        while (work)
                {
-               FileCacheEntry *fce = work->data;
+               auto fce = static_cast<FileCacheEntry *>(work->data);
                if (fce->fd == fd)
                        {
                        /* entry exists */
@@ -101,7 +100,7 @@ void file_cache_set_size(FileCacheData *fc, gulong size)
        while (fc->size > size && work)
                {
                GList *prev;
-               last_fe = work->data;
+               last_fe = static_cast<FileCacheEntry *>(work->data);
                prev = work->prev;
                fc->list = g_list_delete_link(fc->list, work);
                work = prev;
@@ -130,15 +129,18 @@ void file_cache_put(FileCacheData *fc, FileData *fd, gulong size)
        file_cache_set_size(fc, fc->max_size);
 }
 
-//gulong file_cache_get_max_size(FileCacheData *fc)
-//{
-       //return fc->max_size;
-//}
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-function"
+gulong file_cache_get_max_size_unused(FileCacheData *fc)
+{
+       return fc->max_size;
+}
 
-//gulong file_cache_get_size(FileCacheData *fc)
-//{
-       //return fc->size;
-//}
+gulong file_cache_get_size_unused(FileCacheData *fc)
+{
+       return fc->size;
+}
+#pragma GCC diagnostic pop
 
 void file_cache_set_max_size(FileCacheData *fc, gulong size)
 {
@@ -157,7 +159,7 @@ static void file_cache_remove_fd(FileCacheData *fc, FileData *fd)
        while (work)
                {
                GList *current = work;
-               fe = work->data;
+               fe = static_cast<FileCacheEntry *>(work->data);
                work = work->next;
 
                if (fe->fd == fd)
@@ -182,7 +184,7 @@ void file_cache_dump(FileCacheData *fc)
 
        while (work)
                {
-               FileCacheEntry *fe = work->data;
+               auto fe = static_cast<FileCacheEntry *>(work->data);
                work = work->next;
                DEBUG_1("cache entry: fc=%p [%lu] %s %ld", (void *)fc, ++n, fe->fd->path, fe->size);
                }
@@ -190,7 +192,7 @@ void file_cache_dump(FileCacheData *fc)
 
 static void file_cache_notify_cb(FileData *fd, NotifyType type, gpointer data)
 {
-       FileCacheData *fc = data;
+       auto fc = static_cast<FileCacheData *>(data);
 
        if (type & (NOTIFY_REREAD | NOTIFY_CHANGE)) /* invalidate the entry on each file change */
                {