--------
- cache: missing filesystem support for pre-allocation is no longer fatal (#549)
- lua: policy.rpz() no longer watches the file when watch is set to false (!954)
+- fix a strict aliasing problem that might've lead to "miscompilation" (!962)
Knot Resolver 5.0.1 (2020-02-05)
}
/** @internal Incremental memory reservation */
-static inline int array_std_reserve(void *baton, char **mem, size_t elm_size, size_t want, size_t *have)
+static inline int array_std_reserve(void *baton, void **mem, size_t elm_size, size_t want, size_t *have)
{
if (*have >= want) {
return 0;
* Mempool usage: pass kr_memreserve and a knot_mm_t* .
* @return 0 if success, <0 on failure */
#define array_reserve_mm(array, n, reserve, baton) \
- (reserve)((baton), (char **) &(array).at, sizeof((array).at[0]), (n), &(array).cap)
+ (reserve)((baton), (void **) &(array).at, sizeof((array).at[0]), (n), &(array).cap)
/**
* Push value at the end of the array, resize it if necessary.
}
/** Reservation through tracked memory allocator. */
-static int test_reserve(void *baton, char **mem, size_t elm_size, size_t want, size_t *have)
+static int test_reserve(void *baton, void **mem, size_t elm_size, size_t want, size_t *have)
{
if (want > *have) {
void *new_mem = mm_alloc(baton, elm_size * want);
}
/** Reservation through fake memory allocator. */
-static int fake_reserve(void *baton, char **mem, size_t elm_size, size_t want, size_t *have)
+static int fake_reserve(void *baton, void **mem, size_t elm_size, size_t want, size_t *have)
{
return -1;
}
return result;
}
-int kr_memreserve(void *baton, char **mem, size_t elm_size, size_t want, size_t *have)
+int kr_memreserve(void *baton, void **mem, size_t elm_size, size_t want, size_t *have)
{
if (*have >= want) {
return 0;
/** Memory reservation routine for knot_mm_t */
KR_EXPORT
-int kr_memreserve(void *baton, char **mem, size_t elm_size, size_t want, size_t *have);
+int kr_memreserve(void *baton, void **mem, size_t elm_size, size_t want, size_t *have);
/** @internal Fast packet reset. */
KR_EXPORT