| 1 |
/*************************************************************************** |
/* SPDX-License-Identifier: GPL-3.0-or-later */ |
| 2 |
article_view_log.c - description |
/* |
| 3 |
------------------- |
* article_view_log |
| 4 |
Copyright : (C) 2004-2025 by Leaflet |
* - data persistence and query of article view log |
| 5 |
Email : leaflet@leafok.com |
* |
| 6 |
***************************************************************************/ |
* Copyright (C) 2004-2025 Leaflet <leaflet@leafok.com> |
| 7 |
|
*/ |
| 8 |
/*************************************************************************** |
|
| 9 |
* * |
#ifdef HAVE_CONFIG_H |
| 10 |
* This program is free software; you can redistribute it and/or modify * |
#include "config.h" |
| 11 |
* it under the terms of the GNU General Public License as published by * |
#endif |
|
* the Free Software Foundation; either version 3 of the License, or * |
|
|
* (at your option) any later version. * |
|
|
* * |
|
|
***************************************************************************/ |
|
| 12 |
|
|
| 13 |
#include "article_view_log.h" |
#include "article_view_log.h" |
| 14 |
#include "common.h" |
#include "common.h" |
| 181 |
int32_t *aid_new; |
int32_t *aid_new; |
| 182 |
int aid_new_cnt; |
int aid_new_cnt; |
| 183 |
int i, j, k; |
int i, j, k; |
| 184 |
|
int len; |
| 185 |
|
|
| 186 |
if (p_view_log == NULL) |
if (p_view_log == NULL) |
| 187 |
{ |
{ |
| 222 |
} |
} |
| 223 |
} |
} |
| 224 |
|
|
| 225 |
memcpy(aid_new + k, p_view_log->aid_base + i, sizeof(int32_t) * (size_t)(p_view_log->aid_base_cnt - i)); |
len = p_view_log->aid_base_cnt - i; |
| 226 |
k += (p_view_log->aid_base_cnt - i); |
if (len > 0) |
| 227 |
memcpy(aid_new + k, p_view_log->aid_inc + j, sizeof(int32_t) * (size_t)(p_view_log->aid_inc_cnt - j)); |
{ |
| 228 |
k += (p_view_log->aid_inc_cnt - j); |
memcpy(aid_new + k, p_view_log->aid_base + i, |
| 229 |
|
sizeof(int32_t) * (size_t)len); |
| 230 |
|
k += len; |
| 231 |
|
} |
| 232 |
|
len = p_view_log->aid_inc_cnt - j; |
| 233 |
|
if (len > 0) |
| 234 |
|
{ |
| 235 |
|
memcpy(aid_new + k, p_view_log->aid_inc + j, |
| 236 |
|
sizeof(int32_t) * (size_t)len); |
| 237 |
|
k += len; |
| 238 |
|
} |
| 239 |
|
|
| 240 |
free(p_view_log->aid_base); |
free(p_view_log->aid_base); |
| 241 |
p_view_log->aid_base = aid_new; |
p_view_log->aid_base = aid_new; |
| 274 |
mid = (left + right) / 2; |
mid = (left + right) / 2; |
| 275 |
if (aid < (i == 0 ? p_view_log->aid_base[mid] : p_view_log->aid_inc[mid])) |
if (aid < (i == 0 ? p_view_log->aid_base[mid] : p_view_log->aid_inc[mid])) |
| 276 |
{ |
{ |
| 277 |
right = mid; |
right = mid - 1; |
| 278 |
} |
} |
| 279 |
else if (aid > (i == 0 ? p_view_log->aid_base[mid] : p_view_log->aid_inc[mid])) |
else if (aid > (i == 0 ? p_view_log->aid_base[mid] : p_view_log->aid_inc[mid])) |
| 280 |
{ |
{ |
| 323 |
mid = (left + right) / 2; |
mid = (left + right) / 2; |
| 324 |
if (aid < (i == 0 ? p_view_log->aid_base[mid] : p_view_log->aid_inc[mid])) |
if (aid < (i == 0 ? p_view_log->aid_base[mid] : p_view_log->aid_inc[mid])) |
| 325 |
{ |
{ |
| 326 |
right = mid; |
right = mid - 1; |
| 327 |
} |
} |
| 328 |
else if (aid > (i == 0 ? p_view_log->aid_base[mid] : p_view_log->aid_inc[mid])) |
else if (aid > (i == 0 ? p_view_log->aid_base[mid] : p_view_log->aid_inc[mid])) |
| 329 |
{ |
{ |