Commit Graph

13127 Commits

Author SHA1 Message Date
bobsayshilol 30fb2ed59d Avoid undefined arithmetic shifting
The result of a left shift on a positive signed integer (Rune) must fit
into an unsigned integer otherwise it's undefined behaviour, as is left
shifting a negative integer by any amount. This code can only be hit if
|x >= 0xf0| and hence a left shift of 31 will always be undefined
unless the input is 0 or 1.

To avoid hitting this we can instead extend the lowest bit to be the
mask if we assume that ints are 2's complement, which we already do
elsewhere. This generates identical code in testing on Compiler
Explorer and the Odin test suite passes locally with this change.

Note that the original code would change to be defined behaviour in
C++20, however we are currently build with |-std=c++14| in the build
scripts.
2024-12-01 11:54:51 +11:00
bobsayshilol ddde456af7 Avoid member access through nullptr in debug
If |result_count| is 0 then |results| will be a nullptr and hence the
access |results->Tuple| is undefined behaviour. There's already an
early return in the 0 branch so move that to be the first thing so that
we can guarantee that it's not a nullptr.

Note that technically we take the address of the result so it's not
actually dereferencing it, however UBSan doesn't care about that.
2024-12-01 11:54:51 +11:00
bobsayshilol b10538da7a Fix invalid union access
UBSan spotted that |src->Basic.kind| had a value outside the range of
|BasicKind| due to it actually being a |Type_Pointer|. Since these are
stored in a union there could be cases where the value of |kind| just
so happens to be |Basic_string|, in which case the branch would have
been taken when it shouldn't have been.

To fix this simply check that it's a |Type_Basic| before treating it as
a |Basic|.
2024-12-01 11:54:51 +11:00
Laytan 78dc4d4907 fix test 2024-12-01 11:54:51 +11:00
Laytan 9f1c894f1f port pthread_mutex_t and pthread_cond_t from sys/unix cause miniaudio wants it 2024-12-01 11:54:51 +11:00
Laytan f342215b4d clean up dynlib and path/filepath with sys/posix 2024-12-01 11:54:51 +11:00
Laytan 2b5f0fc729 remove pthread from sys/unix and use sys/posix where used 2024-12-01 11:54:51 +11:00
Laytan 7de56ec852 fix #load_directory including nested directories 2024-12-01 11:54:51 +11:00
Laytan Laats 49ddbd9b99 sys/posix: impl rest of linux, impl some of Windows 2024-12-01 11:54:51 +11:00
Karl Zylinski 879771fe32 Fix for using utf8string.at with last rune index returning wrong rune. 2024-12-01 11:54:51 +11:00
Jeroen van Rijn c9c237babf match_exact_value: return when type is compound
fixes #4431
2024-12-01 11:54:51 +11:00
Alexis Caraballo d9326ae93d fix cbor.to_json always returning array of tuples for objects
to_json uses a small proc to check if all keys of an object are strings.
It was always returning false for any input.
2024-12-01 11:54:51 +11:00
Jeroen van Rijn 1df246664f Fix image.which_bytes
Invert test in `which_bytes` to fix Softimage PIC detection. Fixes #4429.
2024-12-01 11:54:51 +11:00
Laytan 5faefac106 math/rand: choice_bit_set return not_empty -> ok 2024-12-01 11:54:51 +11:00
Laytan Laats d85f18e898 math/rand: add choice_bit_set 2024-12-01 11:54:51 +11:00
Patric Dexheimer 12cfc9b8de Update process_windows.odin
Mistype
2024-12-01 11:54:51 +11:00
IllusionMan1212 fafb2b1e75 core/io: correctly escape runes greater than 0xFFFF 2024-12-01 11:54:51 +11:00
Yawning Angel 111f10cbbf src/big_int.cpp: Use square-multiply for exponentiation
For utterly unrealistic constant sizes, this still crashes on my system,
but it crashes fast due to the OOM killer, and people using rediculously
large exponents get what they deserve.
2024-12-01 11:54:51 +11:00
gingerBill 197339d91d Add warning for unsigned >= 0 like conditions in a for loop 2024-12-01 11:54:51 +11:00
gingerBill e6a4f3048f Fix possible leak in recursive filepath.glob 2024-12-01 11:54:51 +11:00
gingerBill 63f880ae80 Fix bug caused due to incorrect type checking looking for context not defined in a context 2024-12-01 11:54:51 +11:00
Laytan Laats 8e6cbe9a29 fix the typeid type kind of a typeid being set to Typeid_Invalid 2024-12-01 11:54:51 +11:00
Laytan Laats f3c19e183f wgpu: add missing JS impl for RenderPassEncoderSetBlendConstant 2024-12-01 11:54:51 +11:00
Laytan Laats d185ab5991 sys/wasm/js: add set_element_style 2024-12-01 11:54:51 +11:00
Laytan Laats 3740497e42 encoding/cbor: fix skipping of ignored/missing fields in struct unmarshal 2024-12-01 11:54:51 +11:00
Laytan Laats 4207d4fded encoding/cbor: handle binary having more fields than the struct by discarding 2024-12-01 11:54:51 +11:00
Laytan Laats 0d4d3bd1de math/rand: support non-contiguous enums in choice_enum 2024-12-01 11:54:51 +11:00
Laytan Laats 538cea27f7 wgpu: take version check out of @init, use C cc when appropriate 2024-12-01 11:54:51 +11:00
Laytan Laats 0c470895b3 image: add panic when load is called without any registered loaders 2024-12-01 11:54:50 +11:00
Laytan Laats 6e534c0e24 check packed load and set alignment on all loads, not just lb_emit_load 2024-12-01 11:54:50 +11:00
Laytan Laats 64fdf6e18f quote the dsymutil argument
Fixes #4417
2024-12-01 11:54:50 +11:00
Lucas Perlind fc3ea5b3d9 core/unicode/utf16: add rune_count proc
This returns the number of runes in a u16 slice
2024-12-01 11:54:50 +11:00
Misomosi f1667422e6 Fix #4390 by assigning invalid entity type 2024-12-01 11:54:50 +11:00
Misomosi cb5e064526 Fixes #4395 by not assuming simd returns val 2024-12-01 11:54:50 +11:00
Misomosi b459cb6b2c Fix magnitude check in parse_f64_prefix 2024-12-01 11:54:50 +11:00
Lucas Perlind 28d01ce7b5 cached.cpp: Improve internal cached robustness
Do not memory map files; Windows cannot write to a file that is memory
mapped.
Write cache after llvm building. This ensures the cache won't have a
false positive if llvm fails.
2024-12-01 11:54:50 +11:00
laytan 182a916092 fix erronous updating alignment of external global 2024-12-01 11:54:50 +11:00
Colin Davidson 79975efb7e add better comment about freebsd hacks 2024-12-01 11:54:50 +11:00
Colin Davidson f7fffc4b27 Update core/time/timezone/tzdate.odin
Co-authored-by: Feoramund <161657516+Feoramund@users.noreply.github.com>
2024-12-01 11:54:50 +11:00
Colin Davidson e4983831de Update core/time/timezone/tzdate.odin
Co-authored-by: Feoramund <161657516+Feoramund@users.noreply.github.com>
2024-12-01 11:54:50 +11:00
Colin Davidson f2711dca7f add julian day rule resolvers 2024-12-01 11:54:50 +11:00
Colin Davidson 83932280f8 swap datetime_to_str to aprintf 2024-12-01 11:54:50 +11:00
Colin Davidson 0ed3d459f7 delete local_str with the appropriate allocator 2024-12-01 11:54:50 +11:00
Colin Davidson e8b6652aba sort out windows enum names too 2024-12-01 11:54:50 +11:00
Colin Davidson 8875921ec7 tweaks per laytan suggestions 2024-12-01 11:54:50 +11:00
Colin Davidson fc9983e9c8 Initial cut of timezones 2024-12-01 11:54:50 +11:00
Tom Solberg b7e61095a9 cbor: fix capacity and ptr calculation for dynarray unmarshal 2024-12-01 11:54:50 +11:00
Laytan Laats 357f463372 odin/parser: fix offsets of value declarations
Fixes #4356
2024-12-01 11:54:50 +11:00
IllusionMan1212 1f2875e939 fix(core:{odin,c}/tokenizer): Don't error on valid \uE000 codepoint 2024-12-01 11:54:50 +11:00
Laytan Laats f56ac466c3 encoding/json: fix leak when string is unmarshalled into non-string field
Fixes #4391
2024-12-01 11:54:50 +11:00