[ruby/prism] Fix up clang-analyzer violations
https://github.com/ruby/prism/commit/259aef2acd
This commit is contained in:
parent
79df0f135e
commit
646a00892e
@ -2774,6 +2774,7 @@ pm_call_node_not_create(pm_parser_t *parser, pm_node_t *receiver, pm_token_t *me
|
|||||||
if (arguments->closing_loc.start != NULL) {
|
if (arguments->closing_loc.start != NULL) {
|
||||||
node->base.location.end = arguments->closing_loc.end;
|
node->base.location.end = arguments->closing_loc.end;
|
||||||
} else {
|
} else {
|
||||||
|
assert(receiver != NULL);
|
||||||
node->base.location.end = receiver->location.end;
|
node->base.location.end = receiver->location.end;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -21229,6 +21230,8 @@ pm_parser_errors_format(const pm_parser_t *parser, const pm_list_t *error_list,
|
|||||||
|
|
||||||
if (inline_messages) {
|
if (inline_messages) {
|
||||||
pm_buffer_append_byte(buffer, ' ');
|
pm_buffer_append_byte(buffer, ' ');
|
||||||
|
assert(error->error != NULL);
|
||||||
|
|
||||||
const char *message = error->error->message;
|
const char *message = error->error->message;
|
||||||
pm_buffer_append_string(buffer, message, strlen(message));
|
pm_buffer_append_string(buffer, message, strlen(message));
|
||||||
}
|
}
|
||||||
|
@ -172,21 +172,21 @@ karatsuba_multiply(pm_integer_t *destination, pm_integer_t *left, pm_integer_t *
|
|||||||
pm_integer_t y0 = { 0, half, right_values, false };
|
pm_integer_t y0 = { 0, half, right_values, false };
|
||||||
pm_integer_t y1 = { 0, right_length - half, right_values + half, false };
|
pm_integer_t y1 = { 0, right_length - half, right_values + half, false };
|
||||||
|
|
||||||
pm_integer_t z0;
|
pm_integer_t z0 = { 0 };
|
||||||
karatsuba_multiply(&z0, &x0, &y0, base);
|
karatsuba_multiply(&z0, &x0, &y0, base);
|
||||||
|
|
||||||
pm_integer_t z2;
|
pm_integer_t z2 = { 0 };
|
||||||
karatsuba_multiply(&z2, &x1, &y1, base);
|
karatsuba_multiply(&z2, &x1, &y1, base);
|
||||||
|
|
||||||
// For simplicity to avoid considering negative values,
|
// For simplicity to avoid considering negative values,
|
||||||
// use `z1 = (x0 + x1) * (y0 + y1) - z0 - z2` instead of original karatsuba algorithm.
|
// use `z1 = (x0 + x1) * (y0 + y1) - z0 - z2` instead of original karatsuba algorithm.
|
||||||
pm_integer_t x01;
|
pm_integer_t x01 = { 0 };
|
||||||
big_add(&x01, &x0, &x1, base);
|
big_add(&x01, &x0, &x1, base);
|
||||||
|
|
||||||
pm_integer_t y01;
|
pm_integer_t y01 = { 0 };
|
||||||
big_add(&y01, &y0, &y1, base);
|
big_add(&y01, &y0, &y1, base);
|
||||||
|
|
||||||
pm_integer_t xy;
|
pm_integer_t xy = { 0 };
|
||||||
karatsuba_multiply(&xy, &x01, &y01, base);
|
karatsuba_multiply(&xy, &x01, &y01, base);
|
||||||
|
|
||||||
pm_integer_t z1;
|
pm_integer_t z1;
|
||||||
@ -326,6 +326,8 @@ pm_integer_convert_base(pm_integer_t *destination, const pm_integer_t *source, u
|
|||||||
INTEGER_EXTRACT(source, source_length, source_values)
|
INTEGER_EXTRACT(source, source_length, source_values)
|
||||||
|
|
||||||
size_t bigints_length = (source_length + 1) / 2;
|
size_t bigints_length = (source_length + 1) / 2;
|
||||||
|
assert(bigints_length > 0);
|
||||||
|
|
||||||
pm_integer_t *bigints = (pm_integer_t *) xcalloc(bigints_length, sizeof(pm_integer_t));
|
pm_integer_t *bigints = (pm_integer_t *) xcalloc(bigints_length, sizeof(pm_integer_t));
|
||||||
if (bigints == NULL) return;
|
if (bigints == NULL) return;
|
||||||
|
|
||||||
@ -345,13 +347,13 @@ pm_integer_convert_base(pm_integer_t *destination, const pm_integer_t *source, u
|
|||||||
base = next_base;
|
base = next_base;
|
||||||
|
|
||||||
size_t next_length = (bigints_length + 1) / 2;
|
size_t next_length = (bigints_length + 1) / 2;
|
||||||
pm_integer_t *next_bigints = (pm_integer_t *) xmalloc(sizeof(pm_integer_t) * next_length);
|
pm_integer_t *next_bigints = (pm_integer_t *) xcalloc(next_length, sizeof(pm_integer_t));
|
||||||
|
|
||||||
for (size_t bigints_index = 0; bigints_index < bigints_length; bigints_index += 2) {
|
for (size_t bigints_index = 0; bigints_index < bigints_length; bigints_index += 2) {
|
||||||
if (bigints_index + 1 == bigints_length) {
|
if (bigints_index + 1 == bigints_length) {
|
||||||
next_bigints[bigints_index / 2] = bigints[bigints_index];
|
next_bigints[bigints_index / 2] = bigints[bigints_index];
|
||||||
} else {
|
} else {
|
||||||
pm_integer_t multiplied;
|
pm_integer_t multiplied = { 0 };
|
||||||
karatsuba_multiply(&multiplied, &base, &bigints[bigints_index + 1], base_to);
|
karatsuba_multiply(&multiplied, &base, &bigints[bigints_index + 1], base_to);
|
||||||
|
|
||||||
big_add(&next_bigints[bigints_index / 2], &bigints[bigints_index], &multiplied, base_to);
|
big_add(&next_bigints[bigints_index / 2], &bigints[bigints_index], &multiplied, base_to);
|
||||||
@ -584,7 +586,7 @@ pm_integer_string(pm_buffer_t *buffer, const pm_integer_t *integer) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Otherwise, first we'll convert the base from 1<<32 to 10**9.
|
// Otherwise, first we'll convert the base from 1<<32 to 10**9.
|
||||||
pm_integer_t converted;
|
pm_integer_t converted = { 0 };
|
||||||
pm_integer_convert_base(&converted, integer, (uint64_t) 1 << 32, 1000000000);
|
pm_integer_convert_base(&converted, integer, (uint64_t) 1 << 32, 1000000000);
|
||||||
|
|
||||||
if (converted.values == NULL) {
|
if (converted.values == NULL) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user