Mercurial > geeqie
view src/cache-loader.h @ 565:85b9cec260bc
Fix a bug occuring when using certain actions on a collection
item which is not in the selection.
Triggering it will either result in an assertion failure or a
segfault.
To reproduce:
- open a collection
- right-click on a non-selected image
- select Delete... menu entry (or Copy, Move, Rename, Properties...)
It results in the best case:
** ERROR **: file filelist.c: line 905 (file_data_ref): assertion failed: (fd->magick == 0x12345678)
or a pure segfault due to corrupted data.
collection_table_popup_file_list() has to return a list of filedata *
not a list of gchar *.
author | zas_ |
---|---|
date | Sat, 03 May 2008 16:58:17 +0000 |
parents | 48c8e49b571c |
children | 1646720364cf |
line wrap: on
line source
/* * Geeqie * (C) 2005 John Ellis * Copyright (C) 2008 The Geeqie Team * * Author: John Ellis * * This software is released under the GNU General Public License (GNU GPL). * Please read the included file COPYING for more information. * This software comes with no warranty of any kind, use at your own risk! */ #ifndef CACHE_LOADER_H #define CACHE_LOADER_H #include "cache.h" #include "image-load.h" typedef struct _CacheLoader CacheLoader; typedef void (* CacheLoaderDoneFunc)(CacheLoader *cl, gint error, gpointer data); typedef enum { CACHE_LOADER_NONE = 0, CACHE_LOADER_DIMENSIONS = 1 << 0, CACHE_LOADER_DATE = 1 << 1, CACHE_LOADER_MD5SUM = 1 << 2, CACHE_LOADER_SIMILARITY = 1 << 3 } CacheDataType; struct _CacheLoader { FileData *fd; CacheData *cd; CacheDataType todo_mask; CacheDataType done_mask; CacheLoaderDoneFunc done_func; gpointer done_data; gint error; ImageLoader *il; gint idle_id; }; CacheLoader *cache_loader_new(FileData *fd, CacheDataType load_mask, CacheLoaderDoneFunc done_func, gpointer done_data); void cache_loader_free(CacheLoader *cl); #endif