/* This used to crash us on 64-bit; submitted by
Alex Wulms <alex.wulms@scarlet.be> */
-#include "crcsync/crcsync.h"
-#include "crcsync/crcsync.c"
-#include "tap/tap.h"
+#include <ccan/crcsync/crcsync.h>
+#include <ccan/crcsync/crcsync.c>
+#include <ccan/tap/tap.h>
#include <stdlib.h>
#include <stdbool.h>
typedef struct {
int block_count;
- unsigned int *crcs;
+ uint64_t *crcs;
} crc_info_t;
-static void crcblocks(crc_info_t *crc_info, char *data, int datalen, int blocksize)
+static void crcblocks(crc_info_t *crc_info, const char *data, int datalen, int blocksize)
{
crc_info->block_count = (datalen+blocksize-1)/blocksize;
- crc_info->crcs = malloc(sizeof(unsigned int)*(crc_info->block_count + 1));
- crc_of_blocks(data, datalen, blocksize, 30, crc_info->crcs);
+ crc_info->crcs = malloc(sizeof(uint64_t)*(crc_info->block_count + 1));
+ crc_of_blocks(data, datalen, blocksize, 60, crc_info->crcs);
}
#define BLOCKSIZE 5
int main(int argc, char *argv[])
{
/* Divided into BLOCKSIZE blocks */
- char *data1 =
+ const char *data1 =
"abcde" "fghij" "klmno" "pqrst" "uvwxy" "z ABC"
"DEFGH" "IJKLM" "NOPQR" "STUVW" "XYZ 0" "12345" "6789";
/* Divided into blocks that match. */
- char *data2 =
+ const char *data2 =
/* NO MATCH */
"acde"
/* MATCH */
size_t ndigested;
size_t offset = 0;
size_t len2 = strlen(data2);
- size_t finalsize = strlen(data1) % BLOCKSIZE ?: BLOCKSIZE;
+ size_t tailsize = strlen(data1) % BLOCKSIZE;
int expected_i = 0;
plan_tests(ARRAY_SIZE(expected) + 2);
crcblocks(&crc_info1, data1, strlen(data1), BLOCKSIZE);
- crcctx = crc_context_new(BLOCKSIZE, 30, crc_info1.crcs, crc_info1.block_count,
- finalsize);
+ crcctx = crc_context_new(BLOCKSIZE, 60, crc_info1.crcs, crc_info1.block_count,
+ tailsize);
while ( offset < len2)
{
ndigested = crc_read_block(crcctx, &result, data2+offset, len2 - offset);
}
}
ok1(expected_i == ARRAY_SIZE(expected));
-
+ crc_context_free(crcctx);
+ free(crc_info1.crcs);
return 0;
}