// allocate memory for out of place bucket_sort\r
bucket_array_t bucket;\r
\r
- if ( !bucket_malloc(bucket) ) goto out;\r
+ for (uint32_t i = 0; i < 2; i++) {\r
+ for (uint32_t j = 0; j <= 0xff; j++) {\r
+ bucket[i][j].head = malloc(sizeof(uint32_t)<<14);\r
+ if (!bucket[i][j].head) {\r
+ goto out;\r
+ }\r
+ }\r
+ }\r
\r
// initialize statelists: add all possible states which would result into the rightmost 2 bits of the keystream\r
for(i = 1 << 20; i >= 0; --i) {\r
out:\r
free(odd_head);\r
free(even_head);\r
- bucket_free(bucket);\r
+ for (uint8_t i = 0; i < 2; i++)\r
+ for (uint8_t j = 0; j <= 0xff; j++)\r
+ free(bucket[i][j].head);\r
return statelist;\r
}\r
\r
#include "bucketsort.h"
-bool bucket_malloc(bucket_array_t bucket) {
- for (uint32_t i = 0; i < 2; i++) {
- for (uint32_t j = 0; j <= 0xff; j++) {
- bucket[i][j].head = malloc(sizeof(uint32_t)<<14);
- if (!bucket[i][j].head) {
- return false;
- }
- }
- }
- return true;
-}
-
-void bucket_free(bucket_array_t bucket) {
- for (uint8_t i = 0; i < 2; i++)
- for (uint8_t j = 0; j <= 0xff; j++)
- free(bucket[i][j].head);
-}
-
void bucket_sort_intersect(uint32_t* const estart, uint32_t* const estop,
uint32_t* const ostart, uint32_t* const ostop,
bucket_info_t *bucket_info, bucket_array_t bucket)
#ifndef BUCKETSORT_H__
#define BUCKETSORT_H__
#include <stdint.h>
-#include <stdbool.h>
#include <stdlib.h>
typedef struct bucket {
uint32_t *head;
uint32_t numbuckets;
} bucket_info_t;
-
-bool bucket_malloc(bucket_array_t bucket);
-void bucket_free(bucket_array_t bucket);
void bucket_sort_intersect(uint32_t* const estart, uint32_t* const estop,
uint32_t* const ostart, uint32_t* const ostop,
bucket_info_t *bucket_info, bucket_array_t bucket);