From b543be0d155412c2270ae9cec3f0c85d558ac07a Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Mon, 11 Mar 2024 18:09:41 -0400 Subject: [PATCH 1/4] Copy file names from`dirent` into `FileInfo` during `read_directory` --- src/path.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/path.cpp b/src/path.cpp index 742bba7f8..b07f20870 100644 --- a/src/path.cpp +++ b/src/path.cpp @@ -407,7 +407,7 @@ gb_internal ReadDirectoryError read_directory(String path, Array *fi) i64 size = dir_stat.st_size; FileInfo info = {}; - info.name = name; + info.name = copy_string(a, name); info.fullpath = path_to_full_path(a, filepath); info.size = size; array_add(fi, info); From dd74a57c442008e19c31d1805531683c8a62f7c8 Mon Sep 17 00:00:00 2001 From: Ed Yu Date: Tue, 12 Mar 2024 08:39:53 -0700 Subject: [PATCH 2/4] Expose internal invmod and int_exponent_mod with more consistent naming --- core/math/big/internal.odin | 1 + core/math/big/prime.odin | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/core/math/big/internal.odin b/core/math/big/internal.odin index 03623e7f2..07e1e6c03 100644 --- a/core/math/big/internal.odin +++ b/core/math/big/internal.odin @@ -2047,6 +2047,7 @@ internal_int_inverse_modulo :: proc(dest, a, b: ^Int, allocator := context.alloc return _private_inverse_modulo(dest, a, b) } +internal_int_invmod :: internal_int_inverse_modulo internal_invmod :: proc{ internal_int_inverse_modulo, } /* diff --git a/core/math/big/prime.odin b/core/math/big/prime.odin index 110c10239..cb0b08dbb 100644 --- a/core/math/big/prime.odin +++ b/core/math/big/prime.odin @@ -44,7 +44,7 @@ internal_int_prime_is_divisible :: proc(a: ^Int, allocator := context.allocator) Computes res == G**X mod P. Assumes `res`, `G`, `X` and `P` to not be `nil` and for `G`, `X` and `P` to have been initialized. */ -internal_int_exponent_mod :: proc(res, G, X, P: ^Int, allocator := context.allocator) -> (err: Error) { +internal_int_power_modulo :: proc(res, G, X, P: ^Int, allocator := context.allocator) -> (err: Error) { context.allocator = allocator dr: int @@ -112,6 +112,9 @@ internal_int_exponent_mod :: proc(res, G, X, P: ^Int, allocator := context.alloc */ return _private_int_exponent_mod(res, G, X, P, 0) } +internal_int_exponent_mod :: internal_int_power_modulo +internal_int_powmod :: internal_int_power_modulo +internal_powmod :: proc { internal_int_power_modulo, } /* Kronecker/Legendre symbol (a|p) @@ -1411,4 +1414,4 @@ number_of_rabin_miller_trials :: proc(bit_size: int) -> (number_of_trials: int) case: return 2 /* For keysizes bigger than 10_240 use always at least 2 Rounds */ } -} \ No newline at end of file +} From f7ec628cb20375645f99a851d55e031c76688724 Mon Sep 17 00:00:00 2001 From: rick-masters Date: Tue, 12 Mar 2024 23:57:13 +0000 Subject: [PATCH 3/4] Fix check for too many arguments to a polymorphic record type. --- src/check_expr.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 0911e48cf..c5517ffa3 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -6847,7 +6847,7 @@ gb_internal CallArgumentError check_polymorphic_record_type(CheckerContext *c, O Array ordered_operands = operands; if (!named_fields) { - ordered_operands = array_make(permanent_allocator(), param_count); + ordered_operands = array_make(permanent_allocator(), operands.count); array_copy(&ordered_operands, operands, 0); } else { TEMPORARY_ALLOCATOR_GUARD(); From 7bc962b852e9e4ad0a8619f7265192f528cbe0be Mon Sep 17 00:00:00 2001 From: rick-masters Date: Tue, 12 Mar 2024 23:58:20 +0000 Subject: [PATCH 4/4] Fix variable used to index polymorphic parameter. --- src/check_expr.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/check_expr.cpp b/src/check_expr.cpp index c5517ffa3..1e4c7499b 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -6796,7 +6796,7 @@ gb_internal CallArgumentError check_polymorphic_record_type(CheckerContext *c, O isize index = lookup_polymorphic_record_parameter(original_type, name); if (index >= 0) { TypeTuple *params = get_record_polymorphic_params(original_type); - Entity *e = params->variables[i]; + Entity *e = params->variables[index]; if (e->kind == Entity_Constant) { check_expr_with_type_hint(c, &operands[i], fv->value, e->type); continue;