From 6652d8d95e5f89eeb4c16163e708583e2f8f9799 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Fri, 9 Feb 2007 18:46:47 +0100 Subject: [PATCH] Added "keep buckets" debug option and fixed some bugs. --- lib/sorter/common.h | 1 + lib/sorter/sbuck.c | 4 +++- lib/sorter/sorter.h | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/sorter/common.h b/lib/sorter/common.h index 8affa630..99bc6a5f 100644 --- a/lib/sorter/common.h +++ b/lib/sorter/common.h @@ -23,6 +23,7 @@ extern u64 sorter_bufsize; enum sort_debug { SORT_DEBUG_NO_PRESORT = 1, SORT_DEBUG_NO_JOIN = 2, + SORT_DEBUG_KEEP_BUCKETS = 4, }; struct sort_bucket; diff --git a/lib/sorter/sbuck.c b/lib/sorter/sbuck.c index 08958401..aecf0dad 100644 --- a/lib/sorter/sbuck.c +++ b/lib/sorter/sbuck.c @@ -71,7 +71,7 @@ sbuck_swap_in(struct sort_bucket *b) b->fb = bopen(b->filename, O_RDWR, sorter_stream_bufsize); if (b->flags & SBF_OPEN_WRITE) bseek(b->fb, 0, SEEK_END); - bconfig(b->fb, BCONFIG_IS_TEMP_FILE, 1); + bconfig(b->fb, BCONFIG_IS_TEMP_FILE, 1); /* FIXME: Was it always so? */ b->flags &= ~SBF_SWAPPED_OUT; SORT_XTRACE("Swapped in %s", b->filename); } @@ -104,6 +104,8 @@ sbuck_write(struct sort_bucket *b) { ASSERT(!(b->flags & (SBF_OPEN_READ | SBF_DESTROYED))); b->fb = bopen_tmp(sorter_stream_bufsize); + if (sorter_debug & SORT_DEBUG_KEEP_BUCKETS) + bconfig(b->fb, BCONFIG_IS_TEMP_FILE, 0); b->flags |= SBF_OPEN_WRITE; b->filename = mp_strdup(b->ctx->pool, b->fb->name); } diff --git a/lib/sorter/sorter.h b/lib/sorter/sorter.h index 56ccec55..367f3611 100644 --- a/lib/sorter/sorter.h +++ b/lib/sorter/sorter.h @@ -168,7 +168,7 @@ static inline int P(hash) (P(key) *x) static inline void P(copy_data)(P(key) *key, struct fastbuf *in, struct fastbuf *out) { - bwrite(out, key, sizeof(P(key))); + P(write_key)(out, key); #ifdef SORT_VAR_DATA bbcopy(in, out, SORT_DATA_SIZE(*key)); #else -- 2.39.2