mail_index_view_open_with_map(struct mail_index *index,
struct mail_index_map *map);
void mail_index_view_clone(struct mail_index_view *dest,
- const struct mail_index_view *src);
+ const struct mail_index_view *src,
+ const char *source_filename,
+ unsigned int source_linenum);
+#define mail_index_view_clone(dest, src) \
+ mail_index_view_clone(dest, src, __FILE__, __LINE__)
+
struct mail_index_view *
-mail_index_view_dup_private(const struct mail_index_view *src);
+mail_index_view_dup_private(const struct mail_index_view *src,
+ const char *source_filename,
+ unsigned int source_linenum);
+#define mail_index_view_dup_private(src) \
+ mail_index_view_dup_private(src, __FILE__, __LINE__)
void mail_index_view_ref(struct mail_index_view *view);
void mail_index_view_unref_maps(struct mail_index_view *view);
void mail_index_view_add_hidden_transaction(struct mail_index_view *view,
#include "mail-index-view-private.h"
#include "mail-transaction-log.h"
+#undef mail_index_view_clone
+#undef mail_index_view_dup_private
+
struct mail_index_view *
-mail_index_view_dup_private(const struct mail_index_view *src)
+mail_index_view_dup_private(const struct mail_index_view *src,
+ const char *source_filename,
+ unsigned int source_linenum)
{
struct mail_index_view *view;
struct mail_index_map *map;
view = i_new(struct mail_index_view, 1);
- mail_index_view_clone(view, src);
+ mail_index_view_clone(view, src, source_filename, source_linenum);
map = mail_index_map_clone(view->map);
mail_index_unmap(&view->map);
}
void mail_index_view_clone(struct mail_index_view *dest,
- const struct mail_index_view *src)
+ const struct mail_index_view *src,
+ const char *source_filename,
+ unsigned int source_linenum)
{
i_zero(dest);
dest->refcount = 1;
i_array_init(&dest->module_contexts,
I_MIN(5, mail_index_module_register.id));
+ dest->source_filename = source_filename;
+ dest->source_linenum = source_linenum;
+
DLLIST_PREPEND(&dest->index->views, dest);
}