Commit Graph

13378 Commits

Author SHA1 Message Date
Zoltán Kéri e75a49f095 encoding/base32: Set optimization mode for decode() 2024-12-24 16:07:01 +01:00
Zoltán Kéri 93238db202 encoding/base32: Use consistent allocator and add proper cleanup
Fix memory handling throughout base32 package:
- Make padding map package-level constant (to avoid repeated allocs)
- Use passed allocator in encode's make() call
- Add defer delete for allocated memory in encode
- Add proper cleanup in test cases
- Fix memory cleanup of output buffers

The changes ensure consistent allocator usage and cleanup in both
implementation and tests.
2024-12-24 16:00:00 +01:00
Zoltán Kéri f1f2ed3194 encoding/base32: Fix decode implementation per RFC 4648
Rework base32.decode() to properly handle all cases per RFC 4648:

- Fix error detection order:
  - Check minimum length first (Invalid_Length)
  - Check character validity (Invalid_Character)
  - Check padding and structure (Malformed_Input)

- Fix padding validation:
  - Add required padding length checks (2=6, 4=4, 5=3, 7=1 chars)
  - Ensure padding only appears at end
  - Fix handling of unpadded inputs

- Fix buffer handling:
  - Proper output buffer size calculation
  - Add bounds checking for buffer access
  - Add proper buffer validation

For example:
- "M" correctly returns Invalid_Length (too short)
- "mzxq====" correctly returns Invalid_Character (lowercase)
- "MZXQ=" correctly returns Malformed_Input (wrong padding)
- Unpadded input lengths must be multiples of 8

These changes make the decode function fully compliant with RFC 4648
requirements while providing proper error handling.
2024-12-24 15:52:33 +01:00
Zoltán Kéri 7672ac945a encoding/base32: Add RFC 4648 test suite
Add test suite based on RFC 4648 test vectors and validation rules:
- Add section 10 test vectors for valid encoding/decoding
- Add test cases for invalid character handling (section 3.2)
- Add test cases for padding validation (section 4)
- Add test cases for length requirements (section 6)

The test vectors verify that:
- Empty string encodes/decodes correctly
- Standard cases like "foo" -> "MZXW6===" work
- Invalid characters are rejected
- Missing or malformed padding is detected
- Invalid lengths are caught
2024-12-24 15:28:34 +01:00
Zoltán Kéri b9338777e3 encoding/base32: Fix buffer allocation and bounds checking
Fix buffer allocation size calculation and add proper bounds checking to
ensure output buffer has sufficient space. This fixes crashes that could
occur with inputs like "AA" and other edge cases where the output buffer
was too small.

Remove #no_bounds_check as proper bounds checking is necessary for safe
error handling. The small performance trade-off is worth the improved
robustness.
2024-12-24 02:20:32 +01:00
Zoltán Kéri 8c761627c8 encoding/base32: Replace assertions with error returns
Replace assertions with proper error handling in base32.decode() to allow
programs to handle invalid input gracefully rather than crashing.

The function now returns ([]byte, Error) instead of just []byte.
2024-12-24 02:17:57 +01:00
Jeroen van Rijn ad99d20d29 Remove outdated PNG save helpers 2024-12-23 16:33:23 +01:00
gingerBill 597fba7c31 Merge pull request #4597 from lodinukal/master
`vendor:directx`: fix pointers to multipointers and uuids
2024-12-19 13:36:36 +00:00
imlodinu cce2cb79c9 Change single pointers to multipointers, fix UUIDs in d3d11 and d3d12 2024-12-19 12:23:00 +08:00
gingerBill 61368d942e Merge pull request #4589 from Pariatech/add-trunc-to-linalg-glsl
Add trunc to glsl linalg
2024-12-18 21:20:17 +00:00
Jeroen van Rijn d3f072835d Merge pull request #4592 from cstrachan88/master
Fixes odin-lang/Odin#4591
2024-12-17 21:23:49 +01:00
Courtney Strachan 69bbd8082a Fixed typo in wgpu.js 2024-12-17 12:13:48 -08:00
Gabriel Pariat e0b7bfd21e add trunc to glsl linalg 2024-12-17 13:06:59 -05:00
Laytan 8b1c9b0ff5 Merge pull request #4568 from giuliano-macedo/master
docs: improved `slice.reinterpret` docstring
2024-12-14 16:46:17 +01:00
Giuliano Macedo 6785a485e3 docs: improved reinterpret docstring 2024-12-14 10:10:06 -03:00
gingerBill 0a29d36aa3 Fix bug with comparisons with big endian types 2024-12-12 15:44:49 +00:00
Laytan cecd7ea0b2 Merge pull request #4572 from GonkieDev/win32_rawinput_typo_fix
Typo in windows rawinput constant's name
2024-12-11 23:02:25 +01:00
GonkieDev 6bcfafc3a8 typo fixed (MOUSE_ATTRIUBTTES_CHANGED -> MOUSE_ATTRIBUTES_CHANGED) 2024-12-11 21:02:43 +00:00
gingerBill db1b67daba Merge pull request #4558 from thebigtoona/vendor/raylib-add-rcamera-module-bindings
add bindings for rCamera module in vendor/raylib/raylib.odin
2024-12-11 12:32:55 +00:00
gingerBill 954adef2d4 Merge pull request #4570 from laytan/remove-viral-inlining
compiler: remove viral `#force(_no)_inline`
2024-12-11 12:32:47 +00:00
Laytan Laats c8f0d27cee compiler: remove viral #force(_no)_inline
If a procedure was marked `#force_no_inline`, any procedure calls within
it would also implicitly be. This is not expected for multiple reasons:

1. `#force(_no)_inline` on a call expr works differently than on a procedure literal.
2. Adding the attribute on it and every called proc blows up the amount
   of work for the inliner pass and may increase the time it takes.
3. Putting `#force_no_inline` on a procedure to keep executable size
   down (like we do for some map procedures), benchmark it, or find it in
   asm/ir has the added effect of slowing those procedures down significantly
   and not representing truth.
2024-12-09 19:12:42 +01:00
gingerBill 67720e3a9d Merge pull request #4567 from 2nafish117/dxgi-multipointer-usage
change pointer arg to multipointer in GetDisplayModeList and GetDisplayModeList1
2024-12-09 17:10:06 +00:00
shashank d02f575561 change pointer arg to multipointer in GetDisplayModeList and GetDisplayModeList1 2024-12-08 21:41:01 +05:30
gingerBill f28fa736b3 Merge pull request #4551 from wrapperup/vulkan-1.4.303
`vendor:vulkan` Update bindings version to 1.4.303
2024-12-08 13:11:13 +00:00
wrapperup 59d88f2a22 add missing vulkan video constants 2024-12-07 20:48:14 -05:00
Laytan Laats 6e1d028861 fix #4389 - retrieve file type by opening if other methods failed 2024-12-06 23:51:14 +01:00
Laytan Laats f1cae8d844 fix #4496 - allow unlock of unlocked mutex (making it consistent with windows behaviour) 2024-12-06 23:08:47 +01:00
Laytan Laats 7edd332993 fix #4536 - stack buffer overflow for size_of 0 types in struct unmarshal 2024-12-06 22:12:52 +01:00
Laytan Laats 676fe34863 fix #4547 - wasm -out without file extension 2024-12-06 19:38:53 +01:00
Laytan Laats 402f8dd576 raylib/rlgl: fix foreign imports after update to 5.5 2024-12-06 18:54:48 +01:00
gingerBill 7be0035578 Merge pull request #4560 from gfaster/which-nix-shell
add which to shell.nix to build with --pure
2024-12-06 14:21:16 +00:00
gingerBill e4bdc4ff7c Merge pull request #4562 from dozn/patch-1
Move Struct Field Zipping Outside of Loop
2024-12-06 14:21:01 +00:00
gingerBill 62768ad857 Merge pull request #4564 from gfaster/4553-regression-test
Add regression test for #4553
2024-12-06 14:20:51 +00:00
Gavin 25ae3d0785 Add regression test for #4553
This test is definitely imperfect (should have no erroneous failures,
only erroneous passes), but should serve as a good smoke test
if matrix alignment is ever broken again. Looking at the generated LLVM,
there is a bunch of weird choices for alignment chosen that might be
worth looking into.

It's also worth noting that the failure mode of this test is a #GP
exception, which I don't know how well the test runner handles in a
larger test corpus.
2024-12-05 15:26:18 -05:00
Laytan Laats cf53404f5f sync: fix no new values 2024-12-05 20:05:19 +01:00
Laytan Laats ac3a87c2cf sync: fix require results 2024-12-05 19:04:45 +01:00
Laytan Laats ad438f418d sync: fix futexes on wasm 2024-12-05 19:00:45 +01:00
gingerBill d452d37b93 Fix #4537 2024-12-05 15:51:05 +00:00
gingerBill e3b1646490 Fix #4552 2024-12-05 15:46:35 +00:00
gingerBill dd8e6e884c Try to fix #4553 2024-12-05 15:45:01 +00:00
gingerBill f5b16aa42a Fix #4561 2024-12-05 15:27:41 +00:00
dozn 37fb2754a1 Move Struct Field Zipping Outside of JSON Token Loop 2024-12-05 07:23:34 -08:00
gingerBill f7761ebcc4 Make odin.rc terser 2024-12-05 12:30:55 +00:00
gingerBill a4b071e864 Add /nologo 2024-12-05 12:30:17 +00:00
gingerBill b36a81ef53 ABI change: for indirect parameters size_of <= 16, do callee stack copy 2024-12-05 10:49:39 +00:00
Tina Colvin 52a7a3e5fc change camera defines to constants 2024-12-04 16:44:00 -07:00
Gavin 96691c364b add which to shell.nix to build with --pure 2024-12-04 18:10:19 -05:00
Laytan cdb86d69b3 Merge pull request #4556 from cornishon/index_multi
improve `strings.index_multi`
2024-12-04 22:01:49 +01:00
Adam Zadrożny ce51b79a37 Fix the unused variable errors 2024-12-04 21:09:47 +01:00
Tina Colvin dc0e189e32 add bindings for rCamera module in vendor/raylib/raylib.odin 2024-12-04 11:49:24 -07:00