smartlist_pqueue: use ptrdiff_t instead of int for offsets.

This is technically correct, but should not matter in practice,
since we don't use this on any structs whose size exceeds INT_MAX.
This commit is contained in:
Nick Mathewson 2019-09-04 10:56:14 -04:00
parent 539158f2be
commit dc199f40fb
2 changed files with 10 additions and 9 deletions

View File

@ -678,7 +678,7 @@ smartlist_sort_pointers(smartlist_t *sl)
static inline void static inline void
smartlist_heapify(smartlist_t *sl, smartlist_heapify(smartlist_t *sl,
int (*compare)(const void *a, const void *b), int (*compare)(const void *a, const void *b),
int idx_field_offset, ptrdiff_t idx_field_offset,
int idx) int idx)
{ {
while (1) { while (1) {
@ -725,7 +725,7 @@ smartlist_heapify(smartlist_t *sl,
void void
smartlist_pqueue_add(smartlist_t *sl, smartlist_pqueue_add(smartlist_t *sl,
int (*compare)(const void *a, const void *b), int (*compare)(const void *a, const void *b),
int idx_field_offset, ptrdiff_t idx_field_offset,
void *item) void *item)
{ {
int idx; int idx;
@ -754,7 +754,7 @@ smartlist_pqueue_add(smartlist_t *sl,
void * void *
smartlist_pqueue_pop(smartlist_t *sl, smartlist_pqueue_pop(smartlist_t *sl,
int (*compare)(const void *a, const void *b), int (*compare)(const void *a, const void *b),
int idx_field_offset) ptrdiff_t idx_field_offset)
{ {
void *top; void *top;
tor_assert(sl->num_used); tor_assert(sl->num_used);
@ -778,7 +778,7 @@ smartlist_pqueue_pop(smartlist_t *sl,
void void
smartlist_pqueue_remove(smartlist_t *sl, smartlist_pqueue_remove(smartlist_t *sl,
int (*compare)(const void *a, const void *b), int (*compare)(const void *a, const void *b),
int idx_field_offset, ptrdiff_t idx_field_offset,
void *item) void *item)
{ {
int idx = IDX_OF_ITEM(item); int idx = IDX_OF_ITEM(item);
@ -802,7 +802,7 @@ smartlist_pqueue_remove(smartlist_t *sl,
void void
smartlist_pqueue_assert_ok(smartlist_t *sl, smartlist_pqueue_assert_ok(smartlist_t *sl,
int (*compare)(const void *a, const void *b), int (*compare)(const void *a, const void *b),
int idx_field_offset) ptrdiff_t idx_field_offset)
{ {
int i; int i;
for (i = sl->num_used - 1; i >= 0; --i) { for (i = sl->num_used - 1; i >= 0; --i) {

View File

@ -13,6 +13,7 @@
**/ **/
#include <stdarg.h> #include <stdarg.h>
#include <stddef.h>
#include "lib/smartlist_core/smartlist_core.h" #include "lib/smartlist_core/smartlist_core.h"
#include "lib/smartlist_core/smartlist_foreach.h" #include "lib/smartlist_core/smartlist_foreach.h"
@ -72,18 +73,18 @@ int smartlist_bsearch_idx(const smartlist_t *sl, const void *key,
void smartlist_pqueue_add(smartlist_t *sl, void smartlist_pqueue_add(smartlist_t *sl,
int (*compare)(const void *a, const void *b), int (*compare)(const void *a, const void *b),
int idx_field_offset, ptrdiff_t idx_field_offset,
void *item); void *item);
void *smartlist_pqueue_pop(smartlist_t *sl, void *smartlist_pqueue_pop(smartlist_t *sl,
int (*compare)(const void *a, const void *b), int (*compare)(const void *a, const void *b),
int idx_field_offset); ptrdiff_t idx_field_offset);
void smartlist_pqueue_remove(smartlist_t *sl, void smartlist_pqueue_remove(smartlist_t *sl,
int (*compare)(const void *a, const void *b), int (*compare)(const void *a, const void *b),
int idx_field_offset, ptrdiff_t idx_field_offset,
void *item); void *item);
void smartlist_pqueue_assert_ok(smartlist_t *sl, void smartlist_pqueue_assert_ok(smartlist_t *sl,
int (*compare)(const void *a, const void *b), int (*compare)(const void *a, const void *b),
int idx_field_offset); ptrdiff_t idx_field_offset);
char *smartlist_join_strings(smartlist_t *sl, const char *join, int terminate, char *smartlist_join_strings(smartlist_t *sl, const char *join, int terminate,
size_t *len_out) ATTR_MALLOC; size_t *len_out) ATTR_MALLOC;