scratch: save a couple bytes of unnecessarily-allocated memory
This commit is contained in:
parent
a7a164f2c6
commit
7623cf2b97
|
@ -45,10 +45,10 @@ static size_t secp256k1_scratch_max_allocation(const secp256k1_callback* error_c
|
||||||
for (i = 0; i < scratch->frame; i++) {
|
for (i = 0; i < scratch->frame; i++) {
|
||||||
allocated += scratch->frame_size[i];
|
allocated += scratch->frame_size[i];
|
||||||
}
|
}
|
||||||
if (scratch->max_size - allocated <= objects * ALIGNMENT) {
|
if (scratch->max_size - allocated <= objects * (ALIGNMENT - 1)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return scratch->max_size - allocated - objects * ALIGNMENT;
|
return scratch->max_size - allocated - objects * (ALIGNMENT - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int secp256k1_scratch_allocate_frame(const secp256k1_callback* error_callback, secp256k1_scratch* scratch, size_t n, size_t objects) {
|
static int secp256k1_scratch_allocate_frame(const secp256k1_callback* error_callback, secp256k1_scratch* scratch, size_t n, size_t objects) {
|
||||||
|
@ -60,7 +60,7 @@ static int secp256k1_scratch_allocate_frame(const secp256k1_callback* error_call
|
||||||
}
|
}
|
||||||
|
|
||||||
if (n <= secp256k1_scratch_max_allocation(error_callback, scratch, objects)) {
|
if (n <= secp256k1_scratch_max_allocation(error_callback, scratch, objects)) {
|
||||||
n += objects * ALIGNMENT;
|
n += objects * (ALIGNMENT - 1);
|
||||||
scratch->current_frame = scratch->data;
|
scratch->current_frame = scratch->data;
|
||||||
scratch->data = (void *) ((char *) scratch->data + n);
|
scratch->data = (void *) ((char *) scratch->data + n);
|
||||||
scratch->frame_size[scratch->frame] = n;
|
scratch->frame_size[scratch->frame] = n;
|
||||||
|
|
|
@ -356,7 +356,7 @@ void run_scratch_tests(void) {
|
||||||
|
|
||||||
/* ...but pushing a new stack frame does affect the max allocation */
|
/* ...but pushing a new stack frame does affect the max allocation */
|
||||||
CHECK(secp256k1_scratch_allocate_frame(&none->error_callback, scratch, 500, 1) == 1);
|
CHECK(secp256k1_scratch_allocate_frame(&none->error_callback, scratch, 500, 1) == 1);
|
||||||
CHECK(secp256k1_scratch_max_allocation(&none->error_callback, scratch, 1) < 500); /* 500 - ALIGNMENT */
|
CHECK(secp256k1_scratch_max_allocation(&none->error_callback, scratch, 1) < 500); /* 500 - (ALIGNMENT - 1) */
|
||||||
CHECK(secp256k1_scratch_alloc(&none->error_callback, scratch, 500) != NULL);
|
CHECK(secp256k1_scratch_alloc(&none->error_callback, scratch, 500) != NULL);
|
||||||
CHECK(secp256k1_scratch_alloc(&none->error_callback, scratch, 500) == NULL);
|
CHECK(secp256k1_scratch_alloc(&none->error_callback, scratch, 500) == NULL);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue