summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/data.c b/data.c
index 60eda25..d037af0 100644
--- a/data.c
+++ b/data.c
@@ -2499,10 +2499,8 @@ xs_list *content_search(snac *user, const char *regex,
2499 return xs_list_new(); 2499 return xs_list_new();
2500 2500
2501 xs_set seen; 2501 xs_set seen;
2502 xs_set skipped;
2503 2502
2504 xs_set_init(&seen); 2503 xs_set_init(&seen);
2505 xs_set_init(&skipped);
2506 2504
2507 if (max_secs == 0) 2505 if (max_secs == 0)
2508 max_secs = 3; 2506 max_secs = 3;
@@ -2523,6 +2521,8 @@ xs_list *content_search(snac *user, const char *regex,
2523 xs_list_next(pub_tl, &pub_md5, &pub_c); 2521 xs_list_next(pub_tl, &pub_md5, &pub_c);
2524 xs_list_next(priv_tl, &priv_md5, &priv_c); 2522 xs_list_next(priv_tl, &priv_md5, &priv_c);
2525 2523
2524 show += skip;
2525
2526 while (show > 0) { 2526 while (show > 0) {
2527 char *md5 = NULL; 2527 char *md5 = NULL;
2528 enum { NONE, PUBLIC, PRIVATE } from = NONE; 2528 enum { NONE, PUBLIC, PRIVATE } from = NONE;
@@ -2594,20 +2594,21 @@ xs_list *content_search(snac *user, const char *regex,
2594 xs *l = xs_regex_select_n(c, regex, 1); 2594 xs *l = xs_regex_select_n(c, regex, 1);
2595 2595
2596 if (xs_list_len(l)) { 2596 if (xs_list_len(l)) {
2597 if (skip > 0) { 2597 if (xs_set_add(&seen, md5) == 1)
2598 if (xs_set_add(&skipped, md5) == 1) 2598 show--;
2599 skip--;
2600 }
2601 else {
2602 if (xs_set_add(&seen, md5) == 1)
2603 show--;
2604 }
2605 } 2599 }
2606 } 2600 }
2607 2601
2608 xs_set_free(&skipped); 2602 xs_list *r = xs_set_result(&seen);
2609 2603
2610 return xs_set_result(&seen); 2604 if (skip) {
2605 /* BAD */
2606 while (skip--) {
2607 r = xs_list_del(r, 0);
2608 }
2609 }
2610
2611 return r;
2611} 2612}
2612 2613
2613 2614